diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 499cd3f..8b8f7c0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,7 +12,6 @@ concurrency: env: CARGO_TERM_COLOR: always - NODE_VERSION: '20' jobs: # Detect docs-only changes to skip heavy jobs @@ -23,6 +22,8 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 + with: + fetch-depth: 0 - name: Detect docs-only changes id: check @@ -33,7 +34,6 @@ jobs: BASE="${{ github.event.before }}" fi - # Check if only docs changed if git diff --name-only "$BASE" HEAD | grep -qvE '^(docs/|\.md$|\.mdx$)'; then echo "docs_only=false" >> "$GITHUB_OUTPUT" else @@ -46,192 +46,47 @@ jobs: if: needs.docs-scope.outputs.docs_only != 'true' runs-on: ubuntu-latest strategy: + fail-fast: false matrix: - rust: - - stable - - nightly + rust: [stable, nightly] steps: - name: Checkout uses: actions/checkout@v4 - - name: Setup Rust toolchain - uses: dtolnay/rust-toolchain@stable + - name: Setup Rust ${{ matrix.rust }} + uses: dtolnay/rust-toolchain@master with: toolchain: ${{ matrix.rust }} components: rustfmt, clippy - - name: Cache cargo registry - uses: actions/cache@v4 - with: - path: ~/.cargo/registry - key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }} - - - name: Cache cargo index - uses: actions/cache@v4 - with: - path: ~/.cargo/git - key: ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }} - - - name: Cache cargo build + - name: Cache cargo uses: actions/cache@v4 with: - path: target - key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }} + path: | + ~/.cargo/registry + ~/.cargo/git + crates/constraint-theory-core/target + key: ${{ runner.os }}-cargo-${{ matrix.rust }}-${{ hashFiles('**/Cargo.lock') }} + restore-keys: | + ${{ runner.os }}-cargo-${{ matrix.rust }}- - name: Check formatting - run: cargo fmt --all -- --check + working-directory: crates/constraint-theory-core + run: cargo fmt --check - name: Run clippy - run: cargo clippy --all-targets --all-features -- -D warnings - - - name: Run tests - run: cargo test --all-features --verbose - - - name: Run doc tests - run: cargo test --doc - - # WASM build and test - wasm-checks: - needs: [docs-scope] - if: needs.docs-scope.outputs.docs_only != 'true' - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Rust toolchain - uses: dtolnay/rust-toolchain@stable - with: - target: wasm32-unknown-unknown - - - name: Setup wasm-pack - run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh - - - name: Cache cargo registry - uses: actions/cache@v4 - with: - path: ~/.cargo/registry - key: ${{ runner.os }}-cargo-registry-wasm-${{ hashFiles('**/Cargo.lock') }} - - - name: Cache cargo build - uses: actions/cache@v4 - with: - path: target - key: ${{ runner.os }}-cargo-build-wasm-${{ hashFiles('**/Cargo.lock') }} - - - name: Build WASM package - run: | - cd packages/constraint-theory-wasm - wasm-pack build --target web --scope superinstance - - - name: Test WASM - run: | - cd packages/constraint-theory-wasm - wasm-pack test --node - - # Python checks - python-checks: - needs: [docs-scope] - if: needs.docs-scope.outputs.docs_only != 'true' - runs-on: ubuntu-latest - strategy: - matrix: - python-version: ['3.10', '3.11', '3.12'] - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python-version }} - cache: 'pip' - - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install ruff pytest pytest-cov mypy - - - name: Run ruff linter - run: ruff check . - - - name: Run ruff formatter check - run: ruff format --check . - - - name: Run type checks - run: mypy packages/constraint-theory-python --strict - - - name: Run tests - run: pytest packages/constraint-theory-python --cov --cov-report=xml - - - name: Upload coverage - uses: codecov/codecov-action@v4 - with: - files: ./coverage.xml - flags: python - - # TypeScript/Node.js checks - node-checks: - needs: [docs-scope] - if: needs.docs-scope.outputs.docs_only != 'true' - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: ${{ env.NODE_VERSION }} - cache: 'npm' - - - name: Install dependencies - run: npm ci - - - name: Run TypeScript checks - run: npm run type-check - - - name: Run linter - run: npm run lint + working-directory: crates/constraint-theory-core + run: cargo clippy --all-targets -- -D warnings - name: Run tests - run: npm test - - - name: Build - run: npm run build - - # Browser tests - browser-tests: - needs: [docs-scope] - if: needs.docs-scope.outputs.docs_only != 'true' - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 + working-directory: crates/constraint-theory-core + run: cargo test --release - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: ${{ env.NODE_VERSION }} - cache: 'npm' + - name: Build docs + working-directory: crates/constraint-theory-core + run: cargo doc --no-deps - - name: Install dependencies - run: npm ci - - - name: Install Playwright - run: npx playwright install --with-deps - - - name: Run browser tests - run: npm run test:browser - - - name: Upload test results - if: always() - uses: actions/upload-artifact@v4 - with: - name: playwright-report - path: playwright-report/ - - # Security scanning + # Security audit security-scan: needs: [docs-scope] if: needs.docs-scope.outputs.docs_only != 'true' @@ -244,45 +99,3 @@ jobs: uses: actions-rs/audit-check@v1 with: token: ${{ secrets.GITHUB_TOKEN }} - - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: '3.12' - - - name: Run safety check - run: | - pip install safety - safety check --json - - - name: Run npm audit - run: npm audit --audit-level=moderate - - # Performance benchmarks - benchmarks: - needs: [docs-scope] - if: needs.docs-scope.outputs.docs_only != 'true' && github.event_name == 'push' - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Rust toolchain - uses: dtolnay/rust-toolchain@stable - - - name: Cache cargo build - uses: actions/cache@v4 - with: - path: target - key: ${{ runner.os }}-cargo-bench-${{ github.sha }} - - - name: Run benchmarks - run: cargo bench --all-features -- --output-format bencher | tee benchmark.txt - - - name: Store benchmark result - uses: benchmark-action/github-action-benchmark@v1 - with: - tool: cargo - output-file-path: benchmark.txt - github-token: ${{ secrets.GITHUB_TOKEN }} - auto-push: false diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 290be7a..544491e 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -48,147 +48,3 @@ jobs: echo "- **Environment**: ${{ github.event.inputs.environment || 'production' }}" >> $GITHUB_STEP_SUMMARY echo "- **Commit**: ${{ github.sha }}" >> $GITHUB_STEP_SUMMARY echo "- **URL**: https://constraint-theory.superinstance.ai" >> $GITHUB_STEP_SUMMARY - - # Deploy WASM package to npm - deploy-wasm: - needs: [deploy-pages] - runs-on: ubuntu-latest - if: github.event_name == 'push' && github.ref == 'refs/heads/main' - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Rust toolchain - uses: dtolnay/rust-toolchain@stable - with: - target: wasm32-unknown-unknown - - - name: Setup wasm-pack - run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: '20' - registry-url: 'https://registry.npmjs.org' - - - name: Build WASM package - run: | - cd packages/constraint-theory-wasm - wasm-pack build --target web --scope superinstance - - - name: Publish to npm - run: | - cd packages/constraint-theory-wasm/pkg - npm publish --access public - env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - - # Deploy Python package to PyPI - deploy-python: - needs: [deploy-pages] - runs-on: ubuntu-latest - if: github.event_name == 'push' && github.ref == 'refs/heads/main' - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: '3.12' - - - name: Install build tools - run: | - python -m pip install --upgrade pip - pip install build twine - - - name: Build package - run: | - cd packages/constraint-theory-python - python -m build - - - name: Publish to PyPI - env: - TWINE_USERNAME: __token__ - TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} - run: | - cd packages/constraint-theory-python - python -m twine upload dist/* - - # Deploy Docker image - deploy-docker: - needs: [deploy-pages] - runs-on: ubuntu-latest - if: github.event_name == 'push' && github.ref == 'refs/heads/main' - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Login to GitHub Container Registry - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Extract metadata - id: meta - uses: docker/metadata-action@v5 - with: - images: ghcr.io/superinstance/constraint-theory - tags: | - type=ref,event=branch - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} - type=sha,prefix={{branch}}- - - - name: Build and push - uses: docker/build-push-action@v5 - with: - context: . - file: ./docker/Dockerfile - push: true - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - cache-from: type=gha - cache-to: type=gha,mode=max - platforms: linux/amd64,linux/arm64 - - # Run smoke tests after deployment - smoke-tests: - needs: [deploy-pages, deploy-wasm, deploy-python, deploy-docker] - runs-on: ubuntu-latest - if: always() && needs.deploy-pages.result == 'success' - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: '20' - - - name: Install dependencies - run: npm ci - - - name: Run smoke tests - run: npm run test:smoke - env: - BASE_URL: https://constraint-theory.superinstance.ai - - - name: Run performance checks - run: npm run test:performance - env: - BASE_URL: https://constraint-theory.superinstance.ai - - - name: Add smoke test results - if: always() - run: | - echo "### Smoke Test Results :checkered_flag:" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo "- **Status**: ${{ job.status }}" >> $GITHUB_STEP_SUMMARY - echo "- **URL**: https://constraint-theory.superinstance.ai" >> $GITHUB_STEP_SUMMARY diff --git a/.gitignore b/.gitignore index 408ffd7..47c822a 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,12 @@ target/ **/target/ Cargo.lock +# Cloudflare +.wrangler/ + +# Node +node_modules/ + # Python __pycache__/ *.py[cod] @@ -56,3 +62,6 @@ out/ .pytest_cache/ .coverage .coverage.* + +# Misc artifacts +*.mhtml diff --git a/.wrangler/cache/cf.json b/.wrangler/cache/cf.json deleted file mode 100644 index 9cdcb03..0000000 --- a/.wrangler/cache/cf.json +++ /dev/null @@ -1 +0,0 @@ -{"httpProtocol":"HTTP/1.1","clientAcceptEncoding":"gzip, deflate, br","requestPriority":"","edgeRequestKeepAliveStatus":1,"requestHeaderNames":{},"clientTcpRtt":0,"colo":"SEA","asn":13335,"asOrganization":"Cloudflare, Inc.","country":"US","isEUCountry":false,"city":"Anchorage","continent":"NA","region":"Alaska","regionCode":"AK","timezone":"America/Anchorage","longitude":"-149.90028","latitude":"61.21806","postalCode":"99509","metroCode":"743","tlsVersion":"TLSv1.3","tlsCipher":"AEAD-AES256-GCM-SHA384","tlsClientRandom":"ujD6jvvhIOtgaP0+RVtRyQWHp+aD8EioXLofoJ4dDfQ=","tlsClientCiphersSha1":"kXrN3VEKDdzz2cPKTQaKzpxVTxQ=","tlsClientExtensionsSha1":"1eY97BUYYO8vDaTfHQywB1pcNdM=","tlsClientExtensionsSha1Le":"u4wtEMFQBY18l3BzHAvORm+KGRw=","tlsExportedAuthenticator":{"clientHandshake":"bcca9a92bd3b82b4fc20763ed885500e650081cfb85de84e9f3158e444e597210ed28328284bd841cd80ed8be3ab67e2","serverHandshake":"4968469fcc2141903caed249808e5f4e3a02e0880c9e8d568fadb53a44d5175740434a26ddfb174414e6e989d698a840","clientFinished":"404f863013ae0ede50aa6fe5af976ad6295e4dd29ba5f8c6fe3dcab67f655f626a3faae79f2aee182f1df772db725597","serverFinished":"60da822d70355b0a683e468e81edbd352d90690d58f0bf5b8b86cc238c950c570f8fd2e25aeebef344564e299de2091f"},"tlsClientHelloLength":"1605","tlsClientAuth":{"certPresented":"0","certVerified":"NONE","certRevoked":"0","certIssuerDN":"","certSubjectDN":"","certIssuerDNRFC2253":"","certSubjectDNRFC2253":"","certIssuerDNLegacy":"","certSubjectDNLegacy":"","certSerial":"","certIssuerSerial":"","certSKI":"","certIssuerSKI":"","certFingerprintSHA1":"","certFingerprintSHA256":"","certNotBefore":"","certNotAfter":""},"verifiedBotCategory":"","botManagement":{"corporateProxy":false,"verifiedBot":false,"jsDetection":{"passed":false},"staticResource":false,"detectionIds":{},"score":99}} \ No newline at end of file diff --git a/.wrangler/tmp/bundle-4OOgwL/checked-fetch.js b/.wrangler/tmp/bundle-4OOgwL/checked-fetch.js deleted file mode 100644 index 8c007fd..0000000 --- a/.wrangler/tmp/bundle-4OOgwL/checked-fetch.js +++ /dev/null @@ -1,30 +0,0 @@ -const urls = new Set(); - -function checkURL(request, init) { - const url = - request instanceof URL - ? request - : new URL( - (typeof request === "string" - ? new Request(request, init) - : request - ).url - ); - if (url.port && url.port !== "443" && url.protocol === "https:") { - if (!urls.has(url.toString())) { - urls.add(url.toString()); - console.warn( - `WARNING: known issue with \`fetch()\` requests to custom HTTPS ports in published Workers:\n` + - ` - ${url.toString()} - the custom port will be ignored when the Worker is published using the \`wrangler deploy\` command.\n` - ); - } - } -} - -globalThis.fetch = new Proxy(globalThis.fetch, { - apply(target, thisArg, argArray) { - const [request, init] = argArray; - checkURL(request, init); - return Reflect.apply(target, thisArg, argArray); - }, -}); diff --git a/.wrangler/tmp/bundle-4OOgwL/middleware-insertion-facade.js b/.wrangler/tmp/bundle-4OOgwL/middleware-insertion-facade.js deleted file mode 100644 index a720bd2..0000000 --- a/.wrangler/tmp/bundle-4OOgwL/middleware-insertion-facade.js +++ /dev/null @@ -1,11 +0,0 @@ - import worker, * as OTHER_EXPORTS from "C:\\Users\\casey\\AppData\\Roaming\\npm\\node_modules\\wrangler\\templates\\pages-shim.ts"; - import * as __MIDDLEWARE_0__ from "C:\\Users\\casey\\AppData\\Roaming\\npm\\node_modules\\wrangler\\templates\\middleware\\middleware-ensure-req-body-drained.ts"; -import * as __MIDDLEWARE_1__ from "C:\\Users\\casey\\AppData\\Roaming\\npm\\node_modules\\wrangler\\templates\\middleware\\middleware-miniflare3-json-error.ts"; - - export * from "C:\\Users\\casey\\AppData\\Roaming\\npm\\node_modules\\wrangler\\templates\\pages-shim.ts"; - const MIDDLEWARE_TEST_INJECT = "__INJECT_FOR_TESTING_WRANGLER_MIDDLEWARE__"; - export const __INTERNAL_WRANGLER_MIDDLEWARE__ = [ - - __MIDDLEWARE_0__.default,__MIDDLEWARE_1__.default - ] - export default worker; \ No newline at end of file diff --git a/.wrangler/tmp/bundle-4OOgwL/middleware-loader.entry.ts b/.wrangler/tmp/bundle-4OOgwL/middleware-loader.entry.ts deleted file mode 100644 index b7a122d..0000000 --- a/.wrangler/tmp/bundle-4OOgwL/middleware-loader.entry.ts +++ /dev/null @@ -1,134 +0,0 @@ -// This loads all middlewares exposed on the middleware object and then starts -// the invocation chain. The big idea is that we can add these to the middleware -// export dynamically through wrangler, or we can potentially let users directly -// add them as a sort of "plugin" system. - -import ENTRY, { __INTERNAL_WRANGLER_MIDDLEWARE__ } from "C:\\Users\\casey\\polln\\constrainttheory\\.wrangler\\tmp\\bundle-4OOgwL\\middleware-insertion-facade.js"; -import { __facade_invoke__, __facade_register__, Dispatcher } from "C:\\Users\\casey\\AppData\\Roaming\\npm\\node_modules\\wrangler\\templates\\middleware\\common.ts"; -import type { WorkerEntrypointConstructor } from "C:\\Users\\casey\\polln\\constrainttheory\\.wrangler\\tmp\\bundle-4OOgwL\\middleware-insertion-facade.js"; - -// Preserve all the exports from the worker -export * from "C:\\Users\\casey\\polln\\constrainttheory\\.wrangler\\tmp\\bundle-4OOgwL\\middleware-insertion-facade.js"; - -class __Facade_ScheduledController__ implements ScheduledController { - readonly #noRetry: ScheduledController["noRetry"]; - - constructor( - readonly scheduledTime: number, - readonly cron: string, - noRetry: ScheduledController["noRetry"] - ) { - this.#noRetry = noRetry; - } - - noRetry() { - if (!(this instanceof __Facade_ScheduledController__)) { - throw new TypeError("Illegal invocation"); - } - // Need to call native method immediately in case uncaught error thrown - this.#noRetry(); - } -} - -function wrapExportedHandler(worker: ExportedHandler): ExportedHandler { - // If we don't have any middleware defined, just return the handler as is - if ( - __INTERNAL_WRANGLER_MIDDLEWARE__ === undefined || - __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0 - ) { - return worker; - } - // Otherwise, register all middleware once - for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { - __facade_register__(middleware); - } - - const fetchDispatcher: ExportedHandlerFetchHandler = function ( - request, - env, - ctx - ) { - if (worker.fetch === undefined) { - throw new Error("Handler does not export a fetch() function."); - } - return worker.fetch(request, env, ctx); - }; - - return { - ...worker, - fetch(request, env, ctx) { - const dispatcher: Dispatcher = function (type, init) { - if (type === "scheduled" && worker.scheduled !== undefined) { - const controller = new __Facade_ScheduledController__( - Date.now(), - init.cron ?? "", - () => {} - ); - return worker.scheduled(controller, env, ctx); - } - }; - return __facade_invoke__(request, env, ctx, dispatcher, fetchDispatcher); - }, - }; -} - -function wrapWorkerEntrypoint( - klass: WorkerEntrypointConstructor -): WorkerEntrypointConstructor { - // If we don't have any middleware defined, just return the handler as is - if ( - __INTERNAL_WRANGLER_MIDDLEWARE__ === undefined || - __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0 - ) { - return klass; - } - // Otherwise, register all middleware once - for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { - __facade_register__(middleware); - } - - // `extend`ing `klass` here so other RPC methods remain callable - return class extends klass { - #fetchDispatcher: ExportedHandlerFetchHandler> = ( - request, - env, - ctx - ) => { - this.env = env; - this.ctx = ctx; - if (super.fetch === undefined) { - throw new Error("Entrypoint class does not define a fetch() function."); - } - return super.fetch(request); - }; - - #dispatcher: Dispatcher = (type, init) => { - if (type === "scheduled" && super.scheduled !== undefined) { - const controller = new __Facade_ScheduledController__( - Date.now(), - init.cron ?? "", - () => {} - ); - return super.scheduled(controller); - } - }; - - fetch(request: Request) { - return __facade_invoke__( - request, - this.env, - this.ctx, - this.#dispatcher, - this.#fetchDispatcher - ); - } - }; -} - -let WRAPPED_ENTRY: ExportedHandler | WorkerEntrypointConstructor | undefined; -if (typeof ENTRY === "object") { - WRAPPED_ENTRY = wrapExportedHandler(ENTRY); -} else if (typeof ENTRY === "function") { - WRAPPED_ENTRY = wrapWorkerEntrypoint(ENTRY); -} -export default WRAPPED_ENTRY; diff --git a/.wrangler/tmp/dev-hD4Jm0/pages-shim.js b/.wrangler/tmp/dev-hD4Jm0/pages-shim.js deleted file mode 100644 index 1e626ab..0000000 --- a/.wrangler/tmp/dev-hD4Jm0/pages-shim.js +++ /dev/null @@ -1,211 +0,0 @@ -var __defProp = Object.defineProperty; -var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); - -// .wrangler/tmp/bundle-4OOgwL/checked-fetch.js -var urls = /* @__PURE__ */ new Set(); -function checkURL(request, init) { - const url = request instanceof URL ? request : new URL( - (typeof request === "string" ? new Request(request, init) : request).url - ); - if (url.port && url.port !== "443" && url.protocol === "https:") { - if (!urls.has(url.toString())) { - urls.add(url.toString()); - console.warn( - `WARNING: known issue with \`fetch()\` requests to custom HTTPS ports in published Workers: - - ${url.toString()} - the custom port will be ignored when the Worker is published using the \`wrangler deploy\` command. -` - ); - } - } -} -__name(checkURL, "checkURL"); -globalThis.fetch = new Proxy(globalThis.fetch, { - apply(target, thisArg, argArray) { - const [request, init] = argArray; - checkURL(request, init); - return Reflect.apply(target, thisArg, argArray); - } -}); - -// ../../AppData/Roaming/npm/node_modules/wrangler/templates/pages-shim.ts -var pages_shim_default = { - async fetch(request, env, context) { - const response = await env.ASSETS.fetch(request.url, request); - return new Response(response.body, response); - } -}; - -// ../../AppData/Roaming/npm/node_modules/wrangler/templates/middleware/middleware-ensure-req-body-drained.ts -var drainBody = /* @__PURE__ */ __name(async (request, env, _ctx, middlewareCtx) => { - try { - return await middlewareCtx.next(request, env); - } finally { - try { - if (request.body !== null && !request.bodyUsed) { - const reader = request.body.getReader(); - while (!(await reader.read()).done) { - } - } - } catch (e) { - console.error("Failed to drain the unused request body.", e); - } - } -}, "drainBody"); -var middleware_ensure_req_body_drained_default = drainBody; - -// ../../AppData/Roaming/npm/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts -function reduceError(e) { - return { - name: e?.name, - message: e?.message ?? String(e), - stack: e?.stack, - cause: e?.cause === void 0 ? void 0 : reduceError(e.cause) - }; -} -__name(reduceError, "reduceError"); -var jsonError = /* @__PURE__ */ __name(async (request, env, _ctx, middlewareCtx) => { - try { - return await middlewareCtx.next(request, env); - } catch (e) { - const error = reduceError(e); - return Response.json(error, { - status: 500, - headers: { "MF-Experimental-Error-Stack": "true" } - }); - } -}, "jsonError"); -var middleware_miniflare3_json_error_default = jsonError; - -// .wrangler/tmp/bundle-4OOgwL/middleware-insertion-facade.js -var __INTERNAL_WRANGLER_MIDDLEWARE__ = [ - middleware_ensure_req_body_drained_default, - middleware_miniflare3_json_error_default -]; -var middleware_insertion_facade_default = pages_shim_default; - -// ../../AppData/Roaming/npm/node_modules/wrangler/templates/middleware/common.ts -var __facade_middleware__ = []; -function __facade_register__(...args) { - __facade_middleware__.push(...args.flat()); -} -__name(__facade_register__, "__facade_register__"); -function __facade_invokeChain__(request, env, ctx, dispatch, middlewareChain) { - const [head, ...tail] = middlewareChain; - const middlewareCtx = { - dispatch, - next(newRequest, newEnv) { - return __facade_invokeChain__(newRequest, newEnv, ctx, dispatch, tail); - } - }; - return head(request, env, ctx, middlewareCtx); -} -__name(__facade_invokeChain__, "__facade_invokeChain__"); -function __facade_invoke__(request, env, ctx, dispatch, finalMiddleware) { - return __facade_invokeChain__(request, env, ctx, dispatch, [ - ...__facade_middleware__, - finalMiddleware - ]); -} -__name(__facade_invoke__, "__facade_invoke__"); - -// .wrangler/tmp/bundle-4OOgwL/middleware-loader.entry.ts -var __Facade_ScheduledController__ = class ___Facade_ScheduledController__ { - constructor(scheduledTime, cron, noRetry) { - this.scheduledTime = scheduledTime; - this.cron = cron; - this.#noRetry = noRetry; - } - static { - __name(this, "__Facade_ScheduledController__"); - } - #noRetry; - noRetry() { - if (!(this instanceof ___Facade_ScheduledController__)) { - throw new TypeError("Illegal invocation"); - } - this.#noRetry(); - } -}; -function wrapExportedHandler(worker) { - if (__INTERNAL_WRANGLER_MIDDLEWARE__ === void 0 || __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0) { - return worker; - } - for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { - __facade_register__(middleware); - } - const fetchDispatcher = /* @__PURE__ */ __name(function(request, env, ctx) { - if (worker.fetch === void 0) { - throw new Error("Handler does not export a fetch() function."); - } - return worker.fetch(request, env, ctx); - }, "fetchDispatcher"); - return { - ...worker, - fetch(request, env, ctx) { - const dispatcher = /* @__PURE__ */ __name(function(type, init) { - if (type === "scheduled" && worker.scheduled !== void 0) { - const controller = new __Facade_ScheduledController__( - Date.now(), - init.cron ?? "", - () => { - } - ); - return worker.scheduled(controller, env, ctx); - } - }, "dispatcher"); - return __facade_invoke__(request, env, ctx, dispatcher, fetchDispatcher); - } - }; -} -__name(wrapExportedHandler, "wrapExportedHandler"); -function wrapWorkerEntrypoint(klass) { - if (__INTERNAL_WRANGLER_MIDDLEWARE__ === void 0 || __INTERNAL_WRANGLER_MIDDLEWARE__.length === 0) { - return klass; - } - for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) { - __facade_register__(middleware); - } - return class extends klass { - #fetchDispatcher = /* @__PURE__ */ __name((request, env, ctx) => { - this.env = env; - this.ctx = ctx; - if (super.fetch === void 0) { - throw new Error("Entrypoint class does not define a fetch() function."); - } - return super.fetch(request); - }, "#fetchDispatcher"); - #dispatcher = /* @__PURE__ */ __name((type, init) => { - if (type === "scheduled" && super.scheduled !== void 0) { - const controller = new __Facade_ScheduledController__( - Date.now(), - init.cron ?? "", - () => { - } - ); - return super.scheduled(controller); - } - }, "#dispatcher"); - fetch(request) { - return __facade_invoke__( - request, - this.env, - this.ctx, - this.#dispatcher, - this.#fetchDispatcher - ); - } - }; -} -__name(wrapWorkerEntrypoint, "wrapWorkerEntrypoint"); -var WRAPPED_ENTRY; -if (typeof middleware_insertion_facade_default === "object") { - WRAPPED_ENTRY = wrapExportedHandler(middleware_insertion_facade_default); -} else if (typeof middleware_insertion_facade_default === "function") { - WRAPPED_ENTRY = wrapWorkerEntrypoint(middleware_insertion_facade_default); -} -var middleware_loader_entry_default = WRAPPED_ENTRY; -export { - __INTERNAL_WRANGLER_MIDDLEWARE__, - middleware_loader_entry_default as default -}; -//# sourceMappingURL=pages-shim.js.map diff --git a/.wrangler/tmp/dev-hD4Jm0/pages-shim.js.map b/.wrangler/tmp/dev-hD4Jm0/pages-shim.js.map deleted file mode 100644 index b7f5ec1..0000000 --- a/.wrangler/tmp/dev-hD4Jm0/pages-shim.js.map +++ /dev/null @@ -1,8 +0,0 @@ -{ - "version": 3, - "sources": ["../bundle-4OOgwL/checked-fetch.js", "../../../../../AppData/Roaming/npm/node_modules/wrangler/templates/pages-shim.ts", "../../../../../AppData/Roaming/npm/node_modules/wrangler/templates/middleware/middleware-ensure-req-body-drained.ts", "../../../../../AppData/Roaming/npm/node_modules/wrangler/templates/middleware/middleware-miniflare3-json-error.ts", "../bundle-4OOgwL/middleware-insertion-facade.js", "../../../../../AppData/Roaming/npm/node_modules/wrangler/templates/middleware/common.ts", "../bundle-4OOgwL/middleware-loader.entry.ts"], - "sourceRoot": "C:\\Users\\casey\\polln\\constrainttheory\\.wrangler\\tmp\\dev-hD4Jm0", - "sourcesContent": ["const urls = new Set();\n\nfunction checkURL(request, init) {\n\tconst url =\n\t\trequest instanceof URL\n\t\t\t? request\n\t\t\t: new URL(\n\t\t\t\t\t(typeof request === \"string\"\n\t\t\t\t\t\t? new Request(request, init)\n\t\t\t\t\t\t: request\n\t\t\t\t\t).url\n\t\t\t\t);\n\tif (url.port && url.port !== \"443\" && url.protocol === \"https:\") {\n\t\tif (!urls.has(url.toString())) {\n\t\t\turls.add(url.toString());\n\t\t\tconsole.warn(\n\t\t\t\t`WARNING: known issue with \\`fetch()\\` requests to custom HTTPS ports in published Workers:\\n` +\n\t\t\t\t\t` - ${url.toString()} - the custom port will be ignored when the Worker is published using the \\`wrangler deploy\\` command.\\n`\n\t\t\t);\n\t\t}\n\t}\n}\n\nglobalThis.fetch = new Proxy(globalThis.fetch, {\n\tapply(target, thisArg, argArray) {\n\t\tconst [request, init] = argArray;\n\t\tcheckURL(request, init);\n\t\treturn Reflect.apply(target, thisArg, argArray);\n\t},\n});\n", "// This Worker is used as a default when no Pages Functions are present.\n// It proxies the request directly on to the asset server binding.\n\nexport default >{\n\tasync fetch(request, env, context) {\n\t\tconst response = await env.ASSETS.fetch(request.url, request);\n\t\treturn new Response(response.body, response);\n\t},\n};\n", "import type { Middleware } from \"./common\";\n\nconst drainBody: Middleware = async (request, env, _ctx, middlewareCtx) => {\n\ttry {\n\t\treturn await middlewareCtx.next(request, env);\n\t} finally {\n\t\ttry {\n\t\t\tif (request.body !== null && !request.bodyUsed) {\n\t\t\t\tconst reader = request.body.getReader();\n\t\t\t\twhile (!(await reader.read()).done) {}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(\"Failed to drain the unused request body.\", e);\n\t\t}\n\t}\n};\n\nexport default drainBody;\n", "import type { Middleware } from \"./common\";\n\ninterface JsonError {\n\tmessage?: string;\n\tname?: string;\n\tstack?: string;\n\tcause?: JsonError;\n}\n\nfunction reduceError(e: any): JsonError {\n\treturn {\n\t\tname: e?.name,\n\t\tmessage: e?.message ?? String(e),\n\t\tstack: e?.stack,\n\t\tcause: e?.cause === undefined ? undefined : reduceError(e.cause),\n\t};\n}\n\n// See comment in `bundle.ts` for details on why this is needed\nconst jsonError: Middleware = async (request, env, _ctx, middlewareCtx) => {\n\ttry {\n\t\treturn await middlewareCtx.next(request, env);\n\t} catch (e: any) {\n\t\tconst error = reduceError(e);\n\t\treturn Response.json(error, {\n\t\t\tstatus: 500,\n\t\t\theaders: { \"MF-Experimental-Error-Stack\": \"true\" },\n\t\t});\n\t}\n};\n\nexport default jsonError;\n", "\t\t\t\timport worker, * as OTHER_EXPORTS from \"C:\\\\Users\\\\casey\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\wrangler\\\\templates\\\\pages-shim.ts\";\n\t\t\t\timport * as __MIDDLEWARE_0__ from \"C:\\\\Users\\\\casey\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\middleware-ensure-req-body-drained.ts\";\nimport * as __MIDDLEWARE_1__ from \"C:\\\\Users\\\\casey\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\middleware-miniflare3-json-error.ts\";\n\n\t\t\t\texport * from \"C:\\\\Users\\\\casey\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\wrangler\\\\templates\\\\pages-shim.ts\";\n\t\t\t\tconst MIDDLEWARE_TEST_INJECT = \"__INJECT_FOR_TESTING_WRANGLER_MIDDLEWARE__\";\n\t\t\t\texport const __INTERNAL_WRANGLER_MIDDLEWARE__ = [\n\t\t\t\t\t\n\t\t\t\t\t__MIDDLEWARE_0__.default,__MIDDLEWARE_1__.default\n\t\t\t\t]\n\t\t\t\texport default worker;", "export type Awaitable = T | Promise;\n// TODO: allow dispatching more events?\nexport type Dispatcher = (\n\ttype: \"scheduled\",\n\tinit: { cron?: string }\n) => Awaitable;\n\nexport type IncomingRequest = Request<\n\tunknown,\n\tIncomingRequestCfProperties\n>;\n\nexport interface MiddlewareContext {\n\tdispatch: Dispatcher;\n\tnext(request: IncomingRequest, env: any): Awaitable;\n}\n\nexport type Middleware = (\n\trequest: IncomingRequest,\n\tenv: any,\n\tctx: ExecutionContext,\n\tmiddlewareCtx: MiddlewareContext\n) => Awaitable;\n\nconst __facade_middleware__: Middleware[] = [];\n\n// The register functions allow for the insertion of one or many middleware,\n// We register internal middleware first in the stack, but have no way of controlling\n// the order that addMiddleware is run in service workers so need an internal function.\nexport function __facade_register__(...args: (Middleware | Middleware[])[]) {\n\t__facade_middleware__.push(...args.flat());\n}\nexport function __facade_registerInternal__(\n\t...args: (Middleware | Middleware[])[]\n) {\n\t__facade_middleware__.unshift(...args.flat());\n}\n\nfunction __facade_invokeChain__(\n\trequest: IncomingRequest,\n\tenv: any,\n\tctx: ExecutionContext,\n\tdispatch: Dispatcher,\n\tmiddlewareChain: Middleware[]\n): Awaitable {\n\tconst [head, ...tail] = middlewareChain;\n\tconst middlewareCtx: MiddlewareContext = {\n\t\tdispatch,\n\t\tnext(newRequest, newEnv) {\n\t\t\treturn __facade_invokeChain__(newRequest, newEnv, ctx, dispatch, tail);\n\t\t},\n\t};\n\treturn head(request, env, ctx, middlewareCtx);\n}\n\nexport function __facade_invoke__(\n\trequest: IncomingRequest,\n\tenv: any,\n\tctx: ExecutionContext,\n\tdispatch: Dispatcher,\n\tfinalMiddleware: Middleware\n): Awaitable {\n\treturn __facade_invokeChain__(request, env, ctx, dispatch, [\n\t\t...__facade_middleware__,\n\t\tfinalMiddleware,\n\t]);\n}\n", "// This loads all middlewares exposed on the middleware object and then starts\n// the invocation chain. The big idea is that we can add these to the middleware\n// export dynamically through wrangler, or we can potentially let users directly\n// add them as a sort of \"plugin\" system.\n\nimport ENTRY, { __INTERNAL_WRANGLER_MIDDLEWARE__ } from \"C:\\\\Users\\\\casey\\\\polln\\\\constrainttheory\\\\.wrangler\\\\tmp\\\\bundle-4OOgwL\\\\middleware-insertion-facade.js\";\nimport { __facade_invoke__, __facade_register__, Dispatcher } from \"C:\\\\Users\\\\casey\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\wrangler\\\\templates\\\\middleware\\\\common.ts\";\nimport type { WorkerEntrypointConstructor } from \"C:\\\\Users\\\\casey\\\\polln\\\\constrainttheory\\\\.wrangler\\\\tmp\\\\bundle-4OOgwL\\\\middleware-insertion-facade.js\";\n\n// Preserve all the exports from the worker\nexport * from \"C:\\\\Users\\\\casey\\\\polln\\\\constrainttheory\\\\.wrangler\\\\tmp\\\\bundle-4OOgwL\\\\middleware-insertion-facade.js\";\n\nclass __Facade_ScheduledController__ implements ScheduledController {\n\treadonly #noRetry: ScheduledController[\"noRetry\"];\n\n\tconstructor(\n\t\treadonly scheduledTime: number,\n\t\treadonly cron: string,\n\t\tnoRetry: ScheduledController[\"noRetry\"]\n\t) {\n\t\tthis.#noRetry = noRetry;\n\t}\n\n\tnoRetry() {\n\t\tif (!(this instanceof __Facade_ScheduledController__)) {\n\t\t\tthrow new TypeError(\"Illegal invocation\");\n\t\t}\n\t\t// Need to call native method immediately in case uncaught error thrown\n\t\tthis.#noRetry();\n\t}\n}\n\nfunction wrapExportedHandler(worker: ExportedHandler): ExportedHandler {\n\t// If we don't have any middleware defined, just return the handler as is\n\tif (\n\t\t__INTERNAL_WRANGLER_MIDDLEWARE__ === undefined ||\n\t\t__INTERNAL_WRANGLER_MIDDLEWARE__.length === 0\n\t) {\n\t\treturn worker;\n\t}\n\t// Otherwise, register all middleware once\n\tfor (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) {\n\t\t__facade_register__(middleware);\n\t}\n\n\tconst fetchDispatcher: ExportedHandlerFetchHandler = function (\n\t\trequest,\n\t\tenv,\n\t\tctx\n\t) {\n\t\tif (worker.fetch === undefined) {\n\t\t\tthrow new Error(\"Handler does not export a fetch() function.\");\n\t\t}\n\t\treturn worker.fetch(request, env, ctx);\n\t};\n\n\treturn {\n\t\t...worker,\n\t\tfetch(request, env, ctx) {\n\t\t\tconst dispatcher: Dispatcher = function (type, init) {\n\t\t\t\tif (type === \"scheduled\" && worker.scheduled !== undefined) {\n\t\t\t\t\tconst controller = new __Facade_ScheduledController__(\n\t\t\t\t\t\tDate.now(),\n\t\t\t\t\t\tinit.cron ?? \"\",\n\t\t\t\t\t\t() => {}\n\t\t\t\t\t);\n\t\t\t\t\treturn worker.scheduled(controller, env, ctx);\n\t\t\t\t}\n\t\t\t};\n\t\t\treturn __facade_invoke__(request, env, ctx, dispatcher, fetchDispatcher);\n\t\t},\n\t};\n}\n\nfunction wrapWorkerEntrypoint(\n\tklass: WorkerEntrypointConstructor\n): WorkerEntrypointConstructor {\n\t// If we don't have any middleware defined, just return the handler as is\n\tif (\n\t\t__INTERNAL_WRANGLER_MIDDLEWARE__ === undefined ||\n\t\t__INTERNAL_WRANGLER_MIDDLEWARE__.length === 0\n\t) {\n\t\treturn klass;\n\t}\n\t// Otherwise, register all middleware once\n\tfor (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) {\n\t\t__facade_register__(middleware);\n\t}\n\n\t// `extend`ing `klass` here so other RPC methods remain callable\n\treturn class extends klass {\n\t\t#fetchDispatcher: ExportedHandlerFetchHandler> = (\n\t\t\trequest,\n\t\t\tenv,\n\t\t\tctx\n\t\t) => {\n\t\t\tthis.env = env;\n\t\t\tthis.ctx = ctx;\n\t\t\tif (super.fetch === undefined) {\n\t\t\t\tthrow new Error(\"Entrypoint class does not define a fetch() function.\");\n\t\t\t}\n\t\t\treturn super.fetch(request);\n\t\t};\n\n\t\t#dispatcher: Dispatcher = (type, init) => {\n\t\t\tif (type === \"scheduled\" && super.scheduled !== undefined) {\n\t\t\t\tconst controller = new __Facade_ScheduledController__(\n\t\t\t\t\tDate.now(),\n\t\t\t\t\tinit.cron ?? \"\",\n\t\t\t\t\t() => {}\n\t\t\t\t);\n\t\t\t\treturn super.scheduled(controller);\n\t\t\t}\n\t\t};\n\n\t\tfetch(request: Request) {\n\t\t\treturn __facade_invoke__(\n\t\t\t\trequest,\n\t\t\t\tthis.env,\n\t\t\t\tthis.ctx,\n\t\t\t\tthis.#dispatcher,\n\t\t\t\tthis.#fetchDispatcher\n\t\t\t);\n\t\t}\n\t};\n}\n\nlet WRAPPED_ENTRY: ExportedHandler | WorkerEntrypointConstructor | undefined;\nif (typeof ENTRY === \"object\") {\n\tWRAPPED_ENTRY = wrapExportedHandler(ENTRY);\n} else if (typeof ENTRY === \"function\") {\n\tWRAPPED_ENTRY = wrapWorkerEntrypoint(ENTRY);\n}\nexport default WRAPPED_ENTRY;\n"], - "mappings": ";;;;AAAA,IAAM,OAAO,oBAAI,IAAI;AAErB,SAAS,SAAS,SAAS,MAAM;AAChC,QAAM,MACL,mBAAmB,MAChB,UACA,IAAI;AAAA,KACH,OAAO,YAAY,WACjB,IAAI,QAAQ,SAAS,IAAI,IACzB,SACD;AAAA,EACH;AACH,MAAI,IAAI,QAAQ,IAAI,SAAS,SAAS,IAAI,aAAa,UAAU;AAChE,QAAI,CAAC,KAAK,IAAI,IAAI,SAAS,CAAC,GAAG;AAC9B,WAAK,IAAI,IAAI,SAAS,CAAC;AACvB,cAAQ;AAAA,QACP;AAAA,KACO,IAAI,SAAS,CAAC;AAAA;AAAA,MACtB;AAAA,IACD;AAAA,EACD;AACD;AAnBS;AAqBT,WAAW,QAAQ,IAAI,MAAM,WAAW,OAAO;AAAA,EAC9C,MAAM,QAAQ,SAAS,UAAU;AAChC,UAAM,CAAC,SAAS,IAAI,IAAI;AACxB,aAAS,SAAS,IAAI;AACtB,WAAO,QAAQ,MAAM,QAAQ,SAAS,QAAQ;AAAA,EAC/C;AACD,CAAC;;;AC1BD,IAAO,qBAA8C;AAAA,EACpD,MAAM,MAAM,SAAS,KAAK,SAAS;AAClC,UAAM,WAAW,MAAM,IAAI,OAAO,MAAM,QAAQ,KAAK,OAAO;AAC5D,WAAO,IAAI,SAAS,SAAS,MAAM,QAAQ;AAAA,EAC5C;AACD;;;ACNA,IAAM,YAAwB,8BAAO,SAAS,KAAK,MAAM,kBAAkB;AAC1E,MAAI;AACH,WAAO,MAAM,cAAc,KAAK,SAAS,GAAG;AAAA,EAC7C,UAAE;AACD,QAAI;AACH,UAAI,QAAQ,SAAS,QAAQ,CAAC,QAAQ,UAAU;AAC/C,cAAM,SAAS,QAAQ,KAAK,UAAU;AACtC,eAAO,EAAE,MAAM,OAAO,KAAK,GAAG,MAAM;AAAA,QAAC;AAAA,MACtC;AAAA,IACD,SAAS,GAAG;AACX,cAAQ,MAAM,4CAA4C,CAAC;AAAA,IAC5D;AAAA,EACD;AACD,GAb8B;AAe9B,IAAO,6CAAQ;;;ACRf,SAAS,YAAY,GAAmB;AACvC,SAAO;AAAA,IACN,MAAM,GAAG;AAAA,IACT,SAAS,GAAG,WAAW,OAAO,CAAC;AAAA,IAC/B,OAAO,GAAG;AAAA,IACV,OAAO,GAAG,UAAU,SAAY,SAAY,YAAY,EAAE,KAAK;AAAA,EAChE;AACD;AAPS;AAUT,IAAM,YAAwB,8BAAO,SAAS,KAAK,MAAM,kBAAkB;AAC1E,MAAI;AACH,WAAO,MAAM,cAAc,KAAK,SAAS,GAAG;AAAA,EAC7C,SAAS,GAAQ;AAChB,UAAM,QAAQ,YAAY,CAAC;AAC3B,WAAO,SAAS,KAAK,OAAO;AAAA,MAC3B,QAAQ;AAAA,MACR,SAAS,EAAE,+BAA+B,OAAO;AAAA,IAClD,CAAC;AAAA,EACF;AACD,GAV8B;AAY9B,IAAO,2CAAQ;;;ACzBJ,IAAM,mCAAmC;AAAA,EAE9B;AAAA,EAAyB;AAC3C;AACA,IAAO,sCAAQ;;;ACcnB,IAAM,wBAAsC,CAAC;AAKtC,SAAS,uBAAuB,MAAqC;AAC3E,wBAAsB,KAAK,GAAG,KAAK,KAAK,CAAC;AAC1C;AAFgB;AAShB,SAAS,uBACR,SACA,KACA,KACA,UACA,iBACsB;AACtB,QAAM,CAAC,MAAM,GAAG,IAAI,IAAI;AACxB,QAAM,gBAAmC;AAAA,IACxC;AAAA,IACA,KAAK,YAAY,QAAQ;AACxB,aAAO,uBAAuB,YAAY,QAAQ,KAAK,UAAU,IAAI;AAAA,IACtE;AAAA,EACD;AACA,SAAO,KAAK,SAAS,KAAK,KAAK,aAAa;AAC7C;AAfS;AAiBF,SAAS,kBACf,SACA,KACA,KACA,UACA,iBACsB;AACtB,SAAO,uBAAuB,SAAS,KAAK,KAAK,UAAU;AAAA,IAC1D,GAAG;AAAA,IACH;AAAA,EACD,CAAC;AACF;AAXgB;;;AC3ChB,IAAM,iCAAN,MAAM,gCAA8D;AAAA,EAGnE,YACU,eACA,MACT,SACC;AAHQ;AACA;AAGT,SAAK,WAAW;AAAA,EACjB;AAAA,EArBD,OAYoE;AAAA;AAAA;AAAA,EAC1D;AAAA,EAUT,UAAU;AACT,QAAI,EAAE,gBAAgB,kCAAiC;AACtD,YAAM,IAAI,UAAU,oBAAoB;AAAA,IACzC;AAEA,SAAK,SAAS;AAAA,EACf;AACD;AAEA,SAAS,oBAAoB,QAA0C;AAEtE,MACC,qCAAqC,UACrC,iCAAiC,WAAW,GAC3C;AACD,WAAO;AAAA,EACR;AAEA,aAAW,cAAc,kCAAkC;AAC1D,wBAAoB,UAAU;AAAA,EAC/B;AAEA,QAAM,kBAA+C,gCACpD,SACA,KACA,KACC;AACD,QAAI,OAAO,UAAU,QAAW;AAC/B,YAAM,IAAI,MAAM,6CAA6C;AAAA,IAC9D;AACA,WAAO,OAAO,MAAM,SAAS,KAAK,GAAG;AAAA,EACtC,GATqD;AAWrD,SAAO;AAAA,IACN,GAAG;AAAA,IACH,MAAM,SAAS,KAAK,KAAK;AACxB,YAAM,aAAyB,gCAAU,MAAM,MAAM;AACpD,YAAI,SAAS,eAAe,OAAO,cAAc,QAAW;AAC3D,gBAAM,aAAa,IAAI;AAAA,YACtB,KAAK,IAAI;AAAA,YACT,KAAK,QAAQ;AAAA,YACb,MAAM;AAAA,YAAC;AAAA,UACR;AACA,iBAAO,OAAO,UAAU,YAAY,KAAK,GAAG;AAAA,QAC7C;AAAA,MACD,GAT+B;AAU/B,aAAO,kBAAkB,SAAS,KAAK,KAAK,YAAY,eAAe;AAAA,IACxE;AAAA,EACD;AACD;AAxCS;AA0CT,SAAS,qBACR,OAC8B;AAE9B,MACC,qCAAqC,UACrC,iCAAiC,WAAW,GAC3C;AACD,WAAO;AAAA,EACR;AAEA,aAAW,cAAc,kCAAkC;AAC1D,wBAAoB,UAAU;AAAA,EAC/B;AAGA,SAAO,cAAc,MAAM;AAAA,IAC1B,mBAAyE,wBACxE,SACA,KACA,QACI;AACJ,WAAK,MAAM;AACX,WAAK,MAAM;AACX,UAAI,MAAM,UAAU,QAAW;AAC9B,cAAM,IAAI,MAAM,sDAAsD;AAAA,MACvE;AACA,aAAO,MAAM,MAAM,OAAO;AAAA,IAC3B,GAXyE;AAAA,IAazE,cAA0B,wBAAC,MAAM,SAAS;AACzC,UAAI,SAAS,eAAe,MAAM,cAAc,QAAW;AAC1D,cAAM,aAAa,IAAI;AAAA,UACtB,KAAK,IAAI;AAAA,UACT,KAAK,QAAQ;AAAA,UACb,MAAM;AAAA,UAAC;AAAA,QACR;AACA,eAAO,MAAM,UAAU,UAAU;AAAA,MAClC;AAAA,IACD,GAT0B;AAAA,IAW1B,MAAM,SAAwD;AAC7D,aAAO;AAAA,QACN;AAAA,QACA,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,MACN;AAAA,IACD;AAAA,EACD;AACD;AAnDS;AAqDT,IAAI;AACJ,IAAI,OAAO,wCAAU,UAAU;AAC9B,kBAAgB,oBAAoB,mCAAK;AAC1C,WAAW,OAAO,wCAAU,YAAY;AACvC,kBAAgB,qBAAqB,mCAAK;AAC3C;AACA,IAAO,kCAAQ;", - "names": [] -} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..a00d15d --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,76 @@ +# Contributing to Constraint Theory + +Thank you for your interest in contributing to this geometric computation library. +This project is licensed under the MIT license. + +## Building and Testing + +```bash +git clone https://github.com/SuperInstance/Constraint-Theory.git +cd Constraint-Theory +cargo build --release +cargo test --release +``` + +The core crate lives in `crates/constraint-theory-core/`. To work on it directly: + +```bash +cd crates/constraint-theory-core +cargo build +cargo test --release +``` + +## Code Style + +All code must meet these requirements before a PR will be merged: + +- **Clippy clean**: `cargo clippy -- -D warnings` must pass with no warnings. +- **Formatted**: run `cargo fmt` before committing. CI will reject unformatted code. +- **Documented**: every public item needs a doc comment. The crate enforces + `#![deny(missing_docs)]`, so undocumented public APIs will not compile. +- Write unit tests for new functionality and place them in a `#[cfg(test)]` module + at the bottom of the relevant file. + +## Contributions We Welcome + +We are actively looking for help in these areas: + +- **Higher-dimensional geometry** -- extending manifold support beyond 3D. +- **ML validation** -- using machine learning to validate geometric computations. +- **GPU implementations** -- compute-shader or CUDA/OpenCL backends for + expensive operations. +- **Benchmarks** -- criterion or iai benchmarks for critical paths. +- **Case studies** -- real-world applications that exercise the library. + +If your idea does not fit neatly into one of these categories, open an issue first +so we can discuss scope before you invest significant effort. + +## Pull Request Process + +1. **Fork** the repository and create a feature branch from `main`. +2. **Implement** your change, keeping commits focused and well-described. +3. **Test**: run `cargo test --release` and `cargo clippy -- -D warnings`. +4. **Format**: run `cargo fmt`. +5. **Push** your branch and open a Pull Request against `main`. +6. Fill in the PR template. Describe *what* changed and *why*. +7. A maintainer will review your PR. Please respond to feedback promptly. + +Keep PRs small when possible. Large changes are easier to review when split into +a stack of incremental PRs. + +## Reporting Issues + +When filing a bug report, please include: + +- **Operating system** and version (e.g., Ubuntu 24.04, macOS 15). +- **Rust version** (`rustc --version`). +- **Manifold configuration** -- dimensions, constraints, and parameters used. +- **Expected behavior** -- what you thought would happen. +- **Actual behavior** -- what happened instead, including any error output. +- A **minimal reproduction** if possible. + +## Code of Conduct + +This project follows the +[Rust Community Code of Conduct](https://www.rust-lang.org/policies/code-of-conduct). +We expect all participants to uphold these standards in every interaction. diff --git a/DEPLOY_INSTRUCTIONS.md b/DEPLOY_INSTRUCTIONS.md new file mode 100644 index 0000000..d8ac3de --- /dev/null +++ b/DEPLOY_INSTRUCTIONS.md @@ -0,0 +1,17 @@ +# Deploy Instructions + +## Cloudflare Pages Deployment + +The `web/` directory deploys to Cloudflare Pages via GitHub Actions (`.github/workflows/deploy.yml`). + +- **Project name**: `constraint-theory` +- **URL**: https://constraint-theory.superinstance.ai +- **Required secrets**: `CLOUDFLARE_ACCOUNT_ID` and `CLOUDFLARE_API_TOKEN` (set in GitHub repo settings) + +## Troubleshooting + +If the site shows a 403 error, check that the Cloudflare Pages project exists and is configured to serve `index.html`. + +## Note on wrangler.toml + +The `wrangler.toml` in `web/` is for the Workers API (separate from Pages static hosting). The Pages deployment does not use or reference it. diff --git a/README.md b/README.md index 984ce15..56ce868 100644 --- a/README.md +++ b/README.md @@ -1,344 +1,167 @@ # Constraint Theory -**Geometric substrate for deterministic computation and spatial agent coordination** +A Rust library that snaps continuous vectors to exact Pythagorean coordinates via O(log n) KD-tree lookup. +[![CI](https://github.com/SuperInstance/Constraint-Theory/actions/workflows/ci.yml/badge.svg)](https://github.com/SuperInstance/Constraint-Theory/actions/workflows/ci.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) -[![docs](https://img.shields.io/badge/docs-rigorous-blue)](docs/) [![crate](https://img.shields.io/badge/crates.io-v0.1.0-orange)](https://crates.io/crates/constraint-theory-core) -**Live Demo:** https://constraint-theory.superinstance.ai - --- -## Overview - -Constraint Theory is a geometric computation framework that provides **deterministic output guarantees** through discrete manifold snapping. It enables O(log n) spatial queries via KD-tree indexing and supports efficient coordination of distributed agents through geometric positioning. +## What Is This? -### Key Features +Constraint Theory builds a discrete manifold of [Pythagorean triples](https://en.wikipedia.org/wiki/Pythagorean_triple) (integer-ratio points on the unit circle), indexes them in a KD-tree, and provides a "snap" operator that maps any continuous 2D vector to its nearest exact geometric state. The output is deterministic and always satisfies the constraint predicate — invalid states are excluded by construction, not by validation. -- **Pythagorean Manifold**: Discrete lattice of exact rational coordinates -- **Φ-Folding Operator**: Maps continuous vectors to valid geometric states in O(log n) -- **KD-tree Indexing**: Fast spatial queries for neighbor discovery -- **Deterministic Guarantees**: Invalid outputs excluded by construction -- **12-bit Dodecet Encoding**: Efficient geometric state representation +**Status:** Research release (v0.1.0). 2D only, ~1000 states at default density. Zero dependencies. --- ## Quick Start -### Installation - ```bash -# Clone the repository -git clone https://github.com/SuperInstance/constrainttheory.git -cd constrainttheory - -# Run tests -cd crates/constraint-theory-core +git clone https://github.com/SuperInstance/Constraint-Theory.git +cd Constraint-Theory/crates/constraint-theory-core cargo test --release ``` -### Basic Usage +### Usage ```rust use constraint_theory_core::{PythagoreanManifold, snap}; -// Create manifold with 200 Pythagorean triples +// Build manifold: 200 density → ~1000 Pythagorean states let manifold = PythagoreanManifold::new(200); -// Snap continuous vector to nearest valid state -let vec = [0.6f32, 0.8]; -let (snapped, noise) = snap(&manifold, vec); - -assert!(noise < 0.001); // Guaranteed exact result -println!("Snapped: ({}, {})", snapped[0], snapped[1]); -// Output: (0.6, 0.8) = (3/5, 4/5) exactly -``` - ---- - -## How It Works - -### 1. Geometric State Space - -All computation occurs in a discrete geometric manifold of Pythagorean triples: - -``` -G = {g | C(g) = true} -``` - -Valid states satisfy constraints by construction, eliminating invalid outputs. - -### 2. Φ-Folding Operation - -The Φ-folding operator maps continuous vectors to discrete valid states: +// Snap a continuous vector to its nearest exact state +let (snapped, noise) = snap(&manifold, [0.6, 0.8]); +// (0.6, 0.8) = (3/5, 4/5) — an exact Pythagorean triple +assert!(noise < 0.001); ``` -Φ(v) = argmin_{g ∈ G} ||v - g|| -``` - -Implemented via O(log n) KD-tree nearest-neighbor search. -### 3. Spatial Indexing +### Batch Processing (SIMD) -Agents and data points are indexed in geometric space, enabling: -- O(log n) neighbor queries -- Automatic perspective-based filtering -- Natural parallelization +```rust +use constraint_theory_core::PythagoreanManifold; -### Architecture +let manifold = PythagoreanManifold::new(200); +let vectors = vec![[0.6, 0.8], [0.8, 0.6], [0.1, 0.99]]; +let results = manifold.snap_batch_simd(&vectors); -``` -┌─────────────────────────────────────────────┐ -│ Input: Continuous Vector v in R^n │ -└────────────────┬────────────────────────────┘ - ↓ -┌─────────────────────────────────────────────┐ -│ Φ-Folding: Map to geometric region │ -└────────────────┬────────────────────────────┘ - ↓ -┌─────────────────────────────────────────────┐ -│ KD-tree Lookup: O(log n) search │ -└────────────────┬────────────────────────────┘ - ↓ -┌─────────────────────────────────────────────┐ -│ Snap to Manifold: Exact quantization │ -└────────────────┬────────────────────────────┘ - ↓ -┌─────────────────────────────────────────────┐ -│ Output: Discrete Geometric State g in G │ -└─────────────────────────────────────────────┘ +for (snapped, noise) in results { + println!("({:.4}, {:.4}) noise={:.6}", snapped[0], snapped[1], noise); +} ``` --- -## Use Cases - -### 1. Spatial Agent Coordination - -Enable thousands of agents to coordinate via geometric proximity: - -```rust -// Spawn 10,000 agents -for i in 0..10_000 { - let position = Dodecet::random(); - agents.push(Agent::new(position)); -} +## How It Works -// Each agent queries local neighborhood O(log n) -for agent in &agents { - let neighbors = manifold.neighbors(agent.position, radius); - // Process only nearby agents -} ``` - -### 2. Deterministic Constraint Satisfaction - -Guarantee valid outputs by construction: - -```rust -// Traditional approach: validate after computation -let result = compute(input); -if !is_valid(result) { - // Handle invalid case -} - -// Constraint Theory: invalidity impossible -let result = snap(&manifold, input); -// Always valid by construction +Input: continuous vector v ∈ ℝ² + ↓ +KD-tree nearest-neighbor search: O(log n) + ↓ +Output: exact Pythagorean triple (a/c, b/c) where a² + b² = c² ``` -### 3. Geometric Memory Systems +1. **Build the manifold**: Generate all primitive Pythagorean triples up to a given density, normalize them to unit vectors, and insert into a KD-tree. +2. **Snap**: Given any 2D vector, find the nearest manifold point via KD-tree lookup. The result is always an exact rational coordinate — no floating-point drift. +3. **Batch snap**: Process thousands of vectors using AVX2 SIMD intrinsics for throughput-sensitive applications. -Use rigid structures as stable memory states: - -```rust -// Laman rigidity ↔ Zero Ricci curvature -// Rigid graphs = geometric attractors -let memory_state = manifold.snap_to_rigid(data); -// Guaranteed stable retrieval -``` +The key insight: by restricting the output space to a discrete set of geometrically valid states, you get deterministic computation for free. The constraint predicate `a² + b² = c²` is satisfied by construction, not checked after the fact. --- -## Performance +## Benchmarks -### Benchmarks +All benchmarks run on a 200-density manifold (~1000 states), release build. These are hand-rolled `Instant::now()` measurements — criterion benchmarks are planned. -| Operation | Time | Complexity | Speedup vs NumPy | -|-----------|------|------------|------------------| -| Manifold creation | 50 μs | O(n log n) | - | -| Pythagorean snap | 0.1 μs | O(log n) | ~109× | -| Batch snapping | 74 ns/op | O(log n) | ~147× | -| Spatial query | 0.1 μs | O(log n) | ~100× | +| Operation | Time | Complexity | +|-----------|------|------------| +| Manifold build | ~50 μs | O(n log n) | +| Single snap (KD-tree) | ~100 ns | O(log n) | +| Batch snap (SIMD) | ~74 ns/op | O(log n) | +| Brute-force snap (no KD-tree) | ~10.9 μs | O(n) | -**System:** Apple M1 Pro, 200-point manifold, release build +**Context**: The ~100ns KD-tree lookup is consistent with other Rust spatial indexing crates like [kiddo](https://crates.io/crates/kiddo) and [kd-tree](https://crates.io/crates/kd-tree). The contribution here isn't a faster KD-tree — it's the framework for constraining outputs to exact Pythagorean coordinates. -**Reproduce:** -```bash -cd crates/constraint-theory-core -cargo run --release --example bench -``` +**What the README used to say**: "109× faster than NumPy." That comparison (Rust KD-tree vs Python brute-force) is technically accurate but misleading. See [BENCHMARKS.md](docs/BENCHMARKS.md) for honest methodology and proper baselines. --- -## Mathematical Foundations - -### Core Theorems - -**1. Deterministic Output Theorem** -``` -P(hallucination | constraint_system) = 0 -``` -Invalid outputs are mathematically impossible within the geometric constraint engine. +## Limitations -**2. Laman Rigidity ↔ Zero Ricci Curvature** -``` -Rigid structure ⇔ κ_ij = 0 -``` -Rigid structures are geometric attractors, providing stable memory states. +Be upfront about these: -**3. Holonomy-Information Equivalence** -``` -H(γ) ↔ I_loss(γ) -``` -Zero holonomy implies zero information loss, enabling perfect memory recall. +- **2D only** — the manifold is a set of Pythagorean triples on the unit circle. Higher dimensions are an open research problem. +- **~1000 states** at default density — this is a discrete lattice, not a continuous space. Resolution is finite. +- **Research-grade** — core algorithms work and are tested (82 tests), but this hasn't been battle-tested in production. +- **No ML validation** — theoretical connections to vector quantization exist but are unvalidated empirically. +- **Exact arithmetic, not general CSP** — for general constraint satisfaction, use [OR-Tools](https://developers.google.com/optimization) or [Gecode](https://www.gecode.org/). -> **Important:** These guarantees apply ONLY within the geometric constraint engine, not to LLMs or AI systems generally. See [DISCLAIMERS.md](docs/DISCLAIMERS.md) for clarifications. +See [DISCLAIMERS.md](docs/DISCLAIMERS.md) for detailed scope clarifications. --- ## Project Structure ``` -constrainttheory/ +Constraint-Theory/ ├── crates/ -│ ├── constraint-theory-core/ # Core geometric engine (Rust) -│ │ ├── src/ -│ │ │ ├── manifold.rs # PythagoreanManifold + KD-tree -│ │ │ ├── kdtree.rs # Spatial indexing -│ │ │ ├── simd.rs # AVX2 vectorization -│ │ │ ├── curvature.rs # Ricci flow evolution -│ │ │ ├── cohomology.rs # Sheaf cohomology -│ │ │ ├── percolation.rs # Rigidity percolation -│ │ │ └── gauge.rs # Holonomy transport -│ │ └── Cargo.toml -│ └── gpu-simulation/ # GPU simulation framework -├── web/ # Interactive demonstrations -│ └── simulators/ # Web-based visualizations -├── tools/ # Utility tools -│ ├── coord_converter/ # Dodecet encoding converter -│ └── multiagent_sim/ # Multi-agent simulator -├── docs/ # Research documents -│ ├── MATHEMATICAL_FOUNDATIONS_DEEP_DIVE.md -│ ├── THEORETICAL_GUARANTEES.md -│ ├── GEOMETRIC_INTERPRETATION.md -│ └── BENCHMARKS.md -└── README.md -``` +│ └── constraint-theory-core/ # The Rust library (zero deps) +│ ├── src/ +│ │ ├── manifold.rs # PythagoreanManifold + snap +│ │ ├── kdtree.rs # Spatial indexing +│ │ ├── simd.rs # AVX2 batch processing +│ │ ├── curvature.rs # Ricci flow evolution +│ │ ├── cohomology.rs # Sheaf cohomology +│ │ ├── percolation.rs # Rigidity percolation +│ │ └── gauge.rs # Holonomy transport +│ └── examples/ # Runnable benchmarks +├── web/ # Interactive demos (HTML/JS) +│ └── simulators/ # 45 visualizations +├── docs/ # Research documents +└── CONTRIBUTING.md +``` + +The core library is **~73KB of Rust** with zero production dependencies. The `web/` directory contains interactive demos — these are supplementary, not part of the crate. --- ## Documentation -### Getting Started - -- **[TUTORIAL.md](docs/TUTORIAL.md)** - Step-by-step guide for beginners -- **[DISCLAIMERS.md](docs/DISCLAIMERS.md)** - Important clarifications about scope and limitations -- **[BENCHMARKS.md](docs/BENCHMARKS.md)** - Performance methodology and comparisons - -### Core Mathematical Documents - -1. **[MATHEMATICAL_FOUNDATIONS_DEEP_DIVE.md](docs/MATHEMATICAL_FOUNDATIONS_DEEP_DIVE.md)** (45 pages) - - Rigorous mathematical treatment - - Complete theorem proofs - - Ω-geometry, Φ-folding, discrete differential geometry - -2. **[THEORETICAL_GUARANTEES.md](docs/THEORETICAL_GUARANTEES.md)** (30 pages) - - Deterministic Output Theorem proof - - Complexity analysis: O(log n) - - Optimality results - -3. **[GEOMETRIC_INTERPRETATION.md](docs/GEOMETRIC_INTERPRETATION.md)** (25 pages) - - Visual explanations - - Physical analogies - - Accessible to non-specialists - -4. **[OPEN_QUESTIONS_RESEARCH.md](docs/OPEN_QUESTIONS_RESEARCH.md)** (15 pages) - - Scaling to higher dimensions - - Calabi-Yau connections - - Quantum analogies - ---- - -## Limitations and Open Questions - -This is early-stage research with several open questions: - -### Current Limitations - -- **Scaling to higher dimensions** - Current implementation focuses on ℝ² (2D Pythagorean lattice) -- **Constraint selection strategies** - Optimal constraint choice for arbitrary problems is an open question -- **Empirical validation on ML tasks** - Theoretical guarantees proven, but not yet validated on machine learning workloads - -### Active Research Areas - -- **3D rigidity** - Extending Laman's theorem to three dimensions -- **n-dimensional generalization** - Characterizing rigidity percolation in arbitrary dimensions -- **Physical realization** - Photonic and FPGA implementations -- **Quantum connections** - Formalizing classical-quantum correspondence - -**See:** [`docs/OPEN_QUESTIONS_RESEARCH.md`](docs/OPEN_QUESTIONS_RESEARCH.md) for complete discussion. +- **[TUTORIAL.md](docs/TUTORIAL.md)** — Step-by-step guide +- **[BENCHMARKS.md](docs/BENCHMARKS.md)** — Performance methodology and honest comparisons +- **[DISCLAIMERS.md](docs/DISCLAIMERS.md)** — Scope clarifications (read this before citing the project) +- **[Mathematical Foundations](docs/MATHEMATICAL_FOUNDATIONS_DEEP_DIVE.md)** — Full theoretical treatment --- ## Contributing -We welcome contributions! Please see [`docs/IMPLEMENTATION_GUIDE.md`](docs/IMPLEMENTATION_GUIDE.md) for development guidelines. +See [CONTRIBUTING.md](CONTRIBUTING.md) for build instructions, code style, and PR process. -Areas of particular interest: -- Higher-dimensional generalizations (3D, nD) -- Empirical validation on ML tasks +Areas where contributions would be especially valuable: +- Higher-dimensional generalizations (3D Pythagorean quadruples, nD) +- Empirical validation on ML tasks (vector quantization, embeddings) +- Criterion benchmarks and comparison with other spatial indexing crates - GPU implementations (CUDA, WebGPU) -- Application case studies - ---- - -## Related Projects - -This library is part of the SuperInstance ecosystem: - -- **[claw](https://github.com/SuperInstance/claw)** - Cellular agent engine that uses constrainttheory for spatial positioning -- **[spreadsheet-moment](https://github.com/SuperInstance/spreadsheet-moment)** - Agentic spreadsheet platform -- **[dodecet-encoder](https://github.com/SuperInstance/dodecet-encoder)** - 12-bit geometric encoding library -- **[constrainttheory-ml-demo](https://github.com/SuperInstance/constrainttheory-ml-demo)** - Interactive ML demonstrations - -See [https://github.com/SuperInstance](https://github.com/SuperInstance) for the full ecosystem. --- ## Citation -If you use this work in your research, please cite: - ```bibtex @software{constraint_theory, - title={Constraint Theory: Geometric Infrastructure for Spatial Computing}, - author={SuperInstance Team}, + title={Constraint Theory: Deterministic Manifold Snapping via Pythagorean Geometry}, + author={SuperInstance}, year={2026}, - url={https://github.com/SuperInstance/constrainttheory}, - version={1.0.0} + url={https://github.com/SuperInstance/Constraint-Theory}, + version={0.1.0} } ``` ---- - ## License -MIT License - see [LICENSE](LICENSE) for details. - ---- - -**Last Updated:** 2026-03-19 -**Version:** 1.0.0 -**Status:** Research Release +MIT — see [LICENSE](LICENSE). diff --git a/REPO_METADATA_TODO.md b/REPO_METADATA_TODO.md new file mode 100644 index 0000000..07ae569 --- /dev/null +++ b/REPO_METADATA_TODO.md @@ -0,0 +1,30 @@ +# GitHub Repository Metadata — Manual Update Required + +The GitHub API tools available don't support updating repo description/topics. +Please update these manually via the GitHub web UI (Settings tab or About section). + +## Description + +Change from: +> Constraint Theory gives each agent its own first-person-shooter perspective in a spreadsheet-like SuperInstance + +Change to: +> Geometric computation framework — deterministic manifold snapping with O(log n) KD-tree indexing in Rust + +## Topics + +Add these topics: `rust`, `geometry`, `spatial-indexing`, `kdtree`, `computational-geometry`, `deterministic-computing`, `pythagorean`, `manifold` + +## Website URL + +Set to: `https://constraint-theory.superinstance.ai` + +(Or to the GitHub Pages docs link if the Cloudflare deployment is still 403.) + +## How to Update + +1. Go to https://github.com/SuperInstance/Constraint-Theory +2. Click the gear icon next to "About" (top-right of repo page) +3. Update Description, Website, and Topics +4. Save +5. Delete this file and commit diff --git a/clippy_round9.txt b/clippy_round9.txt deleted file mode 100644 index e391ba1..0000000 --- a/clippy_round9.txt +++ /dev/null @@ -1,2710 +0,0 @@ - Blocking waiting for file lock on build directory -warning: cudaclaw@0.1.0: Compiling CUDA kernel: "kernels\\executor.cu" -warning: cudaclaw@0.1.0: Successfully compiled "kernels\\executor.cu" -warning: cudaclaw@0.1.0: Compiling CUDA kernel: "kernels\\main.cu" -warning: cudaclaw@0.1.0: Successfully compiled "kernels\\main.cu" -warning: cudaclaw@0.1.0: Compiling CUDA kernel: "kernels\\smart_crdt_demo.cu" -warning: cudaclaw@0.1.0: Successfully compiled "kernels\\smart_crdt_demo.cu" - Checking cudaclaw v0.1.0 (C:\Users\casey) -error: `<` is interpreted as a start of generic arguments for `f64`, not a comparison - --> tests\latency_test.rs:273:65 - | -273 | if result.below_target as f64 / result.total_samples as f64 < 0.5 { - | ^ ----- interpreted as generic arguments - | | - | not interpreted as comparison - | -help: try comparing the cast value - | -273 | if result.below_target as f64 / (result.total_samples as f64) < 0.5 { - | + + - -error[E0433]: failed to resolve: there are too many leading `super` keywords - --> tests\alignment_test.rs:5:16 - | -5 | use super::super::*; - | ^^^^^ there are too many leading `super` keywords - -error: cannot find macro `offset_of` in this scope - --> tests\alignment_test.rs:29:20 - | -29 | assert_eq!(offset_of!(Command, cmd_type), 0); - | ^^^^^^^^^ - | - = help: have you added the `#[macro_use]` on the module/import? -help: consider importing this macro - | - 5 + use std::mem::offset_of; - | - -error: cannot find macro `offset_of` in this scope - --> tests\alignment_test.rs:30:20 - | -30 | assert_eq!(offset_of!(Command, id), 4); - | ^^^^^^^^^ - | - = help: have you added the `#[macro_use]` on the module/import? -help: consider importing this macro - | - 5 + use std::mem::offset_of; - | - -error: cannot find macro `offset_of` in this scope - --> tests\alignment_test.rs:31:20 - | -31 | assert_eq!(offset_of!(Command, timestamp), 8); - | ^^^^^^^^^ - | - = help: have you added the `#[macro_use]` on the module/import? -help: consider importing this macro - | - 5 + use std::mem::offset_of; - | - -error[E0412]: cannot find type `LatencyResult` in this scope - --> tests\latency_test.rs:257:51 - | -257 | fn generate_optimization_recommendations(result: &LatencyResult) -> Vec { - | ^^^^^^^^^^^^^ not found in this scope - | -note: struct `crate::latency_tests::LatencyResult` exists but is inaccessible - --> tests\latency_test.rs:24:5 - | - 24 | struct LatencyResult { - | ^^^^^^^^^^^^^^^^^^^^ not accessible - -error[E0425]: cannot find value `TARGET_LATENCY_US` in this scope - --> tests\latency_test.rs:279:25 - | -279 | if result.mean_us > TARGET_LATENCY_US as f64 { - | ^^^^^^^^^^^^^^^^^ not found in this scope - | -note: constant `crate::latency_tests::TARGET_LATENCY_US` exists but is inaccessible - --> tests\latency_test.rs:19:5 - | - 19 | const TARGET_LATENCY_US: u64 = 10; // Target: 10 microseconds - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not accessible - -error[E0425]: cannot find value `TARGET_LATENCY_US` in this scope - --> tests\latency_test.rs:282:29 - | -282 | result.mean_us, TARGET_LATENCY_US - | ^^^^^^^^^^^^^^^^^ not found in this scope - | -note: constant `crate::latency_tests::TARGET_LATENCY_US` exists but is inaccessible - --> tests\latency_test.rs:19:5 - | - 19 | const TARGET_LATENCY_US: u64 = 10; // Target: 10 microseconds - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not accessible - -error: cannot find macro `offset_of` in this scope - --> tests\alignment_test.rs:33:20 - | -33 | assert_eq!(offset_of!(Command, data_a), 16); - | ^^^^^^^^^ - | - = help: have you added the `#[macro_use]` on the module/import? -help: consider importing this macro - | - 5 + use std::mem::offset_of; - | - -error[E0425]: cannot find function `simulate_cell_update` in this scope - --> tests\latency_test.rs:359:21 - | -359 | let _ = simulate_cell_update(); - | ^^^^^^^^^^^^^^^^^^^^ not found in this scope - | -note: function `crate::latency_tests::simulate_cell_update` exists but is inaccessible - --> tests\latency_test.rs:148:5 - | -148 | fn simulate_cell_update() -> Duration { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not accessible - -error: cannot find macro `offset_of` in this scope - --> tests\alignment_test.rs:34:20 - | -34 | assert_eq!(offset_of!(Command, data_b), 20); - | ^^^^^^^^^ - | - = help: have you added the `#[macro_use]` on the module/import? -help: consider importing this macro - | - 5 + use std::mem::offset_of; - | - -error: cannot find macro `offset_of` in this scope - --> tests\alignment_test.rs:35:20 - | -35 | assert_eq!(offset_of!(Command, result), 24); - | ^^^^^^^^^ - | - = help: have you added the `#[macro_use]` on the module/import? -help: consider importing this macro - | - 5 + use std::mem::offset_of; - | - -error: cannot find macro `offset_of` in this scope - --> tests\alignment_test.rs:36:20 - | -36 | assert_eq!(offset_of!(Command, batch_data), 28); - | ^^^^^^^^^ - | - = help: have you added the `#[macro_use]` on the module/import? -help: consider importing this macro - | - 5 + use std::mem::offset_of; - | - -error: cannot find macro `offset_of` in this scope - --> tests\alignment_test.rs:37:20 - | -37 | assert_eq!(offset_of!(Command, batch_count), 36); - | ^^^^^^^^^ - | - = help: have you added the `#[macro_use]` on the module/import? -help: consider importing this macro - | - 5 + use std::mem::offset_of; - | - -warning: unused imports: `Arc` and `Mutex` - --> tests\latency_test.rs:5:17 - | -5 | use std::sync::{Arc, Mutex}; - | ^^^ ^^^^^ - | - = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default - -error: cannot find macro `offset_of` in this scope - --> tests\alignment_test.rs:39:20 - | -39 | assert_eq!(offset_of!(Command, _padding), 40); - | ^^^^^^^^^ - | - = help: have you added the `#[macro_use]` on the module/import? -help: consider importing this macro - | - 5 + use std::mem::offset_of; - | - -error: cannot find macro `offset_of` in this scope - --> tests\alignment_test.rs:40:20 - | -40 | assert_eq!(offset_of!(Command, result_code), 44); - | ^^^^^^^^^ - | - = help: have you added the `#[macro_use]` on the module/import? -help: consider importing this macro - | - 5 + use std::mem::offset_of; - | - -warning: unused import: `super::*` - --> tests\latency_test.rs:304:9 - | -304 | use super::*; - | ^^^^^^^^ - -error[E0412]: cannot find type `Command` in this scope - --> tests\alignment_test.rs:9:40 - | -9 | let size = std::mem::size_of::(); - | ^^^^^^^ not found in this scope - | -help: consider importing one of these structs - | -5 + use std::process::Command; - | -5 + use tokio::process::Command; - | - -error[E0412]: cannot find type `Command` in this scope - --> tests\alignment_test.rs:19:42 - | -19 | let align = std::mem::align_of::(); - | ^^^^^^^ not found in this scope - | -help: consider importing one of these structs - | - 5 + use std::process::Command; - | - 5 + use tokio::process::Command; - | - -error[E0412]: cannot find type `CommandQueueHost` in this scope - --> tests\alignment_test.rs:45:40 - | -45 | let size = std::mem::size_of::(); - | ^^^^^^^^^^^^^^^^ not found in this scope - | -help: you might be missing a type parameter - | -44 | fn test_command_queue_size() { - | ++++++++++++++++++ - -error[E0412]: cannot find type `CommandQueueHost` in this scope - --> tests\alignment_test.rs:69:42 - | -69 | let align = std::mem::align_of::(); - | ^^^^^^^^^^^^^^^^ not found in this scope - | -help: you might be missing a type parameter - | -68 | fn test_command_queue_alignment() { - | ++++++++++++++++++ - -warning: unused macro definition: `offset_of` - --> tests\alignment_test.rs:78:14 - | -78 | macro_rules! offset_of { - | ^^^^^^^^^ - | - = note: `#[warn(unused_macros)]` (part of `#[warn(unused)]`) on by default - -error[E0433]: failed to resolve: use of unresolved module or unlinked crate `rand` - --> tests\latency_test.rs:162:23 - | -162 | let jitter = (rand::random::() - 0.5) * 3.0; // ±1.5 µs jitter - | ^^^^ use of unresolved module or unlinked crate `rand` - | - = help: if you wanted to use a crate named `rand`, use `cargo add rand` to add it to your `Cargo.toml` - -error[E0425]: cannot find function `create_executor` in this scope - --> tests\integration_test.rs:32:28 - | -32 | let mut executor = create_executor(); - | ^^^^^^^^^^^^^^^ not found in this scope - | -help: consider importing this function - | -10 + use crate::create_executor; - | - -error[E0425]: cannot find function `create_no_op_command` in this scope - --> tests\integration_test.rs:39:37 - | -39 | executor.submit_command(create_no_op_command()); - | ^^^^^^^^^^^^^^^^^^^^ not found in this scope - | -help: consider importing this function - | -10 + use crate::create_no_op_command; - | - -error[E0425]: cannot find function `create_cell_update_command` in this scope - --> tests\integration_test.rs:47:37 - | -47 | executor.submit_command(create_cell_update_command()); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^ not found in this scope - | -help: consider importing this function - | -10 + use crate::create_cell_update_command; - | - -error[E0425]: cannot find function `analyze_latencies` in this scope - --> tests\integration_test.rs:54:22 - | -54 | let result = analyze_latencies(&latencies); - | ^^^^^^^^^^^^^^^^^ not found in this scope - | -help: consider importing this function - | -10 + use crate::analyze_latencies; - | - -error[E0425]: cannot find function `print_latency_results` in this scope - --> tests\integration_test.rs:55:9 - | -55 | print_latency_results(&result); - | ^^^^^^^^^^^^^^^^^^^^^ not found in this scope - | -help: consider importing this function - | -10 + use crate::print_latency_results; - | - -error[E0425]: cannot find function `create_executor_with_variant` in this scope - --> tests\integration_test.rs:74:28 - | -74 | let mut executor = create_executor_with_variant(KernelVariant::Adaptive); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not found in this scope - | -help: consider importing this function - | -10 + use crate::create_executor_with_variant; - | - -error[E0425]: cannot find function `create_no_op_command` in this scope - --> tests\integration_test.rs:80:37 - | -80 | executor.submit_command(create_no_op_command()); - | ^^^^^^^^^^^^^^^^^^^^ not found in this scope - | -help: consider importing this function - | -10 + use crate::create_no_op_command; - | - -error[E0425]: cannot find function `create_no_op_command` in this scope - --> tests\integration_test.rs:91:37 - | -91 | executor.submit_command(create_no_op_command()); - | ^^^^^^^^^^^^^^^^^^^^ not found in this scope - | -help: consider importing this function - | -10 + use crate::create_no_op_command; - | - -error[E0425]: cannot find function `create_executor_with_variant` in this scope - --> tests\integration_test.rs:120:32 - | -120 | let mut executor = create_executor_with_variant(variant); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not found in this scope - | -help: consider importing this function - | - 10 + use crate::create_executor_with_variant; - | - -error[E0425]: cannot find function `measure_latency` in this scope - --> tests\integration_test.rs:123:29 - | -123 | let latencies = measure_latency(&mut executor, 1000); - | ^^^^^^^^^^^^^^^ not found in this scope - | -help: consider importing this function - | - 10 + use crate::measure_latency; - | - -error[E0425]: cannot find function `analyze_latencies` in this scope - --> tests\integration_test.rs:124:26 - | -124 | let result = analyze_latencies(&latencies); - | ^^^^^^^^^^^^^^^^^ not found in this scope - | -help: consider importing this function - | - 10 + use crate::analyze_latencies; - | - -error[E0425]: cannot find function `create_executor` in this scope - --> tests\integration_test.rs:158:36 - | -158 | let mut executor = create_executor(); - | ^^^^^^^^^^^^^^^ not found in this scope - | -help: consider importing this function - | - 10 + use crate::create_executor; - | - -error[E0425]: cannot find function `create_cell_update_at` in this scope - --> tests\integration_test.rs:166:31 - | -166 | let cmd = create_cell_update_at(thread_id, i); - | ^^^^^^^^^^^^^^^^^^^^^ not found in this scope - | -help: consider importing this function - | - 10 + use crate::create_cell_update_at; - | - -error[E0425]: cannot find function `analyze_latencies` in this scope - --> tests\integration_test.rs:173:17 - | -173 | analyze_latencies(&latencies) - | ^^^^^^^^^^^^^^^^^ not found in this scope - | -help: consider importing this function - | - 10 + use crate::analyze_latencies; - | - -error[E0412]: cannot find type `Duration` in this scope - --> tests\integration_test.rs:211:35 - | -211 | fn analyze_latencies(latencies: &[Duration]) -> LatencyResult { - | ^^^^^^^^ not found in this scope - | -help: consider importing one of these structs - | - 8 + use std::time::Duration; - | - 8 + use tokio::time::Duration; - | - -error[E0425]: cannot find value `TARGET_LATENCY_US` in this scope - --> tests\integration_test.rs:234:27 - | -234 | .filter(|&&x| x < TARGET_LATENCY_US as f64) - | ^^^^^^^^^^^^^^^^^ not found in this scope - | -note: constant `crate::integration_tests::TARGET_LATENCY_US` exists but is inaccessible - --> tests\integration_test.rs:15:5 - | - 15 | const TARGET_LATENCY_US: u64 = 10; // Target: 10 microseconds - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not accessible - -error[E0425]: cannot find value `TARGET_LATENCY_US` in this scope - --> tests\integration_test.rs:267:82 - | -267 | println!("│ P95 │ {:8.2} µs │ < {:4} µs │", result.p95_us, TARGET_LATENCY_US); - | ^^^^^^^^^^^^^^^^^ not found in this scope - | -note: constant `crate::integration_tests::TARGET_LATENCY_US` exists but is inaccessible - --> tests\integration_test.rs:15:5 - | - 15 | const TARGET_LATENCY_US: u64 = 10; // Target: 10 microseconds - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not accessible - -error[E0425]: cannot find value `TARGET_LATENCY_US` in this scope - --> tests\integration_test.rs:280:24 - | -280 | if result.p95_us < TARGET_LATENCY_US as f64 { - | ^^^^^^^^^^^^^^^^^ not found in this scope - | -note: constant `crate::integration_tests::TARGET_LATENCY_US` exists but is inaccessible - --> tests\integration_test.rs:15:5 - | - 15 | const TARGET_LATENCY_US: u64 = 10; // Target: 10 microseconds - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not accessible - -error[E0425]: cannot find value `TARGET_LATENCY_US` in this scope - --> tests\integration_test.rs:282:31 - | -282 | } else if result.p95_us < TARGET_LATENCY_US as f64 * 1.5 { - | ^^^^^^^^^^^^^^^^^ not found in this scope - | -note: constant `crate::integration_tests::TARGET_LATENCY_US` exists but is inaccessible - --> tests\integration_test.rs:15:5 - | - 15 | const TARGET_LATENCY_US: u64 = 10; // Target: 10 microseconds - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not accessible - -error[E0425]: cannot find value `TARGET_LATENCY_US` in this scope - --> tests\integration_test.rs:284:31 - | -284 | } else if result.p95_us < TARGET_LATENCY_US as f64 * 2.0 { - | ^^^^^^^^^^^^^^^^^ not found in this scope - | -note: constant `crate::integration_tests::TARGET_LATENCY_US` exists but is inaccessible - --> tests\integration_test.rs:15:5 - | - 15 | const TARGET_LATENCY_US: u64 = 10; // Target: 10 microseconds - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not accessible - -error[E0412]: cannot find type `Duration` in this scope - --> tests\integration_test.rs:320:70 - | -320 | fn measure_latency(executor: &mut MockExecutor, count: usize) -> Vec { - | ^^^^^^^^ not found in this scope - | -help: consider importing one of these structs - | - 8 + use std::time::Duration; - | - 8 + use tokio::time::Duration; - | - -error[E0433]: failed to resolve: use of undeclared type `Duration` - --> tests\integration_test.rs:321:10 - | -321 | vec![Duration::from_micros(5); count] - | ^^^^^^^^ use of undeclared type `Duration` - | -help: consider importing one of these structs - | - 8 + use std::time::Duration; - | - 8 + use tokio::time::Duration; - | - -Some errors have detailed explanations: E0412, E0433. -For more information about an error, try `rustc --explain E0412`. -warning: unused import: `QueueStatus` - --> src\agent.rs:11:50 - | -11 | pub use crate::cuda_claw::{Command, CommandType, QueueStatus}; - | ^^^^^^^^^^^ - | - = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default - -error[E0689]: can't call method `max` on ambiguous numeric type `{float}` - --> tests\latency_test.rs:165:39 - | -165 | Duration::from_secs_f64(total.max(0.0) / 1_000_000.0) - | ^^^ - | -help: you must specify a type for this binding, like `f32` - | -163 | let total: f32 = base_latency + jitter; - | +++++ - -warning: `cudaclaw` (test "alignment_test") generated 1 warning -warning: cudaclaw@0.1.0: Compiling CUDA kernel: "kernels\\executor.cu" -warning: cudaclaw@0.1.0: Successfully compiled "kernels\\executor.cu" -warning: cudaclaw@0.1.0: Compiling CUDA kernel: "kernels\\main.cu" -warning: cudaclaw@0.1.0: Successfully compiled "kernels\\main.cu" -warning: cudaclaw@0.1.0: Compiling CUDA kernel: "kernels\\smart_crdt_demo.cu" -warning: cudaclaw@0.1.0: Successfully compiled "kernels\\smart_crdt_demo.cu" -error: could not compile `cudaclaw` (test "alignment_test") due to 15 previous errors; 1 warning emitted -warning: build failed, waiting for other jobs to finish... -warning: unnecessary parentheses around assigned value - --> src\agent.rs:565:26 - | -565 | let _queue_ref = (*queue); // Access the unified memory - | ^ ^ - | - = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default -help: remove these parentheses - | -565 - let _queue_ref = (*queue); // Access the unified memory -565 + let _queue_ref = *queue; // Access the unified memory - | - -warning: unused macro definition: `check_offset` - --> src\alignment.rs:46:18 - | -46 | macro_rules! check_offset { - | ^^^^^^^^^^^^ - | - = note: `#[warn(unused_macros)]` (part of `#[warn(unused)]`) on by default - -warning: unused import: `std::ptr` - --> src\bridge.rs:34:5 - | -34 | use std::ptr; - | ^^^^^^^^ - -warning: empty line after doc comment - --> src\bridge.rs:213:5 - | -213 | / /// ============================================================ -214 | | - | |_^ -... -238 | pub fn as_device_ptr(&self) -> *mut T { - | -------------------- the comment documents this function - | - = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.92.0/index.html#empty_line_after_doc_comments - = note: `-W clippy::empty-line-after-doc-comments` implied by `-W clippy::all` - = help: to override `-W clippy::all` add `#[allow(clippy::empty_line_after_doc_comments)]` - = help: if the empty line is unintentional, remove it -help: if the documentation should include the empty line include it in the comment - | -214 | /// - | - -warning: empty line after doc comment - --> src\bridge.rs:259:5 - | -259 | / /// ============================================================ -260 | | - | |_^ -... -282 | pub fn get_cpu_mut(&mut self) -> &mut T { - | ------------------ the comment documents this function - | - = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.92.0/index.html#empty_line_after_doc_comments - = help: if the empty line is unintentional, remove it -help: if the documentation should include the empty line include it in the comment - | -260 | /// - | - -warning: empty line after doc comment - --> src\bridge.rs:348:5 - | -348 | / /// ============================================================ -349 | | - | |_^ -... -358 | pub fn size_bytes(&self) -> usize { - | ----------------- the comment documents this function - | - = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.92.0/index.html#empty_line_after_doc_comments - = help: if the empty line is unintentional, remove it -help: if the documentation should include the empty line include it in the comment - | -349 | /// - | - -warning: unused macro definition: `offset_of` - --> src\cuda_claw.rs:29:14 - | -29 | macro_rules! offset_of { - | ^^^^^^^^^ - -warning: unused imports: `AtomicU32` and `Ordering` - --> src\cuda_claw.rs:439:33 - | -439 | use std::sync::atomic::{AtomicU32, Ordering}; - | ^^^^^^^^^ ^^^^^^^^ - -warning: empty line after doc comment - --> src\dispatcher.rs:197:5 - | -197 | / /// ============================================================ -198 | | - | |_^ -... -216 | pub fn dispatch_sync(&mut self, cmd: Command) -> Result> { - | -------------------- the comment documents this function - | - = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.92.0/index.html#empty_line_after_doc_comments - = help: if the empty line is unintentional, remove it -help: if the documentation should include the empty line include it in the comment - | -198 | /// - | - -warning: empty line after doc comment - --> src\dispatcher.rs:245:5 - | -245 | / /// ============================================================ -246 | | - | |_^ -... -273 | pub fn dispatch_batch( - | --------------------- the comment documents this function - | - = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.92.0/index.html#empty_line_after_doc_comments - = help: if the empty line is unintentional, remove it -help: if the documentation should include the empty line include it in the comment - | -246 | /// - | - -warning: empty line after doc comment - --> src\dispatcher.rs:314:5 - | -314 | / /// ============================================================ -315 | | - | |_^ -316 | /// Submit command to queue with backpressure handling -317 | fn submit_to_queue(&mut self, mut cmd: Command, cmd_id: u32) -> Result<(), Box> { - | ------------------ the comment documents this function - | - = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.92.0/index.html#empty_line_after_doc_comments - = help: if the empty line is unintentional, remove it -help: if the documentation should include the empty line include it in the comment - | -315 | /// - | - -warning: empty line after doc comment - --> src\dispatcher.rs:441:5 - | -441 | / /// ============================================================ -442 | | - | |_^ -443 | /// Wait for command completion with timeout -444 | fn wait_for_completion( - | ---------------------- the comment documents this function - | - = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.92.0/index.html#empty_line_after_doc_comments - = help: if the empty line is unintentional, remove it -help: if the documentation should include the empty line include it in the comment - | -442 | /// - | - -warning: empty line after doc comment - --> src\dispatcher.rs:512:5 - | -512 | / /// ============================================================ -513 | | - | |_^ -514 | /// Update peak queue depth -515 | fn update_peak_queue_depth(&self, depth: u32) { - | -------------------------- the comment documents this function - | - = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.92.0/index.html#empty_line_after_doc_comments - = help: if the empty line is unintentional, remove it -help: if the documentation should include the empty line include it in the comment - | -513 | /// - | - -warning: unused import: `std::ptr` - --> src\lock_free_queue.rs:20:5 - | -20 | use std::ptr; - | ^^^^^^^^ - -warning: unused import: `CommandType` - --> src\lock_free_queue.rs:21:64 - | -21 | use crate::cuda_claw::{Command, CommandQueueHost, QueueStatus, CommandType}; - | ^^^^^^^^^^^ - -warning: empty line after doc comment - --> src\lock_free_queue.rs:99:1 - | - 99 | / /// ============================================================ -100 | | - | |_^ -101 | /// Queue capacity (must match QUEUE_SIZE in CUDA) -102 | pub const QUEUE_SIZE: u32 = 16; - | -------------------- the comment documents this constant item - | - = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.92.0/index.html#empty_line_after_doc_comments - = help: if the empty line is unintentional, remove it -help: if the documentation should include the empty line include it in the comment - | -100 | /// - | - -warning: unused variable: `update_time` - --> tests\latency_test.rs:134:17 - | -134 | let update_time = simulate_cell_update(); - | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_update_time` - | - = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default - -warning: unused imports: `CellID` and `CellValueType` - --> src\volatile_dispatcher.rs:19:94 - | -19 | use crate::cuda_claw::{Command, CommandQueueHost, CommandType, QueueStatus, SpreadsheetEdit, CellID, CellValueType}; - | ^^^^^^ ^^^^^^^^^^^^^ - -warning: empty line after doc comment - --> src\volatile_dispatcher.rs:124:5 - | -124 | / /// ============================================================ -125 | | - | |_^ -... -157 | pub fn submit_volatile(&mut self, mut cmd: Command) -> Result> { - | ---------------------- the comment documents this function - | - = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.92.0/index.html#empty_line_after_doc_comments - = help: if the empty line is unintentional, remove it -help: if the documentation should include the empty line include it in the comment - | -125 | /// - | - -warning: empty line after doc comment - --> src\volatile_dispatcher.rs:245:5 - | -245 | / /// ============================================================ -246 | | - | |_^ -... -269 | pub fn submit_spreadsheet_edit( - | ------------------------------ the comment documents this function - | - = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.92.0/index.html#empty_line_after_doc_comments - = help: if the empty line is unintentional, remove it -help: if the documentation should include the empty line include it in the comment - | -246 | /// - | - -warning: empty line after doc comment - --> src\volatile_dispatcher.rs:287:5 - | -287 | / /// ============================================================ -288 | | - | |_^ -289 | /// Get current queue status (non-volatile read) -290 | pub fn get_status(&self) -> Result> { - | ----------------- the comment documents this function - | - = help: for further information visit https://rust-lang.github.io/rust-clippy/rust-1.92.0/index.html#empty_line_after_doc_comments - = help: if the empty line is unintentional, remove it -help: if the documentation should include the empty line include it in the comment - | -288 | /// - | - -warning: unused imports: `RoundTripBenchmark` and `VolatileDispatcher` - --> src\main.rs:18:27 - | -18 | use volatile_dispatcher::{VolatileDispatcher, RoundTripBenchmark}; - | ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ - -warning: unused import: `QueueStatus` - --> src\main.rs:325:43 - | -325 | use cuda_claw::{Command, CommandType, QueueStatus}; - | ^^^^^^^^^^^ - -warning: unused import: `QueueStatus` - --> src\main.rs:647:39 - | -647 | use cuda_claw::{CommandQueueHost, QueueStatus}; - | ^^^^^^^^^^^ - -warning: unused variable: `interval_ns` - --> tests\latency_test.rs:317:20 - | -317 | for (name, interval_ns) in strategies { - | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_interval_ns` - -error[E0433]: failed to resolve: use of undeclared type `KernelVariant` - --> tests\integration_test.rs:74:57 - | -74 | let mut executor = create_executor_with_variant(KernelVariant::Adaptive); - | ^^^^^^^^^^^^^ use of undeclared type `KernelVariant` - -Some errors have detailed explanations: E0412, E0425, E0433, E0689. -warning: `cudaclaw` (test "latency_test") generated 4 warnings -warning: cudaclaw@0.1.0: Compiling CUDA kernel: "kernels\\executor.cu" -warning: cudaclaw@0.1.0: Successfully compiled "kernels\\executor.cu" -warning: cudaclaw@0.1.0: Compiling CUDA kernel: "kernels\\main.cu" -warning: cudaclaw@0.1.0: Successfully compiled "kernels\\main.cu" -warning: cudaclaw@0.1.0: Compiling CUDA kernel: "kernels\\smart_crdt_demo.cu" -warning: cudaclaw@0.1.0: Successfully compiled "kernels\\smart_crdt_demo.cu" -error: could not compile `cudaclaw` (test "latency_test") due to 7 previous errors; 4 warnings emitted -error[E0277]: cannot divide `{integer}` by `f64` - --> tests\integration_test.rs:95:50 - | -95 | println!(" Throughput: {} ops/sec", 100 / elapsed.as_secs_f64()); - | ^ no implementation for `{integer} / f64` - | - = help: the trait `std::ops::Div` is not implemented for `{integer}` - = help: the following other types implement trait `std::ops::Div`: - `&f128` implements `std::ops::Div` - `&f128` implements `std::ops::Div` - `&f16` implements `std::ops::Div` - `&f16` implements `std::ops::Div` - `&f32` implements `std::ops::Div` - `&f32` implements `std::ops::Div` - `&f64` implements `std::ops::Div` - `&f64` implements `std::ops::Div` - and 75 others - -error[E0433]: failed to resolve: use of undeclared type `KernelVariant` - --> tests\integration_test.rs:111:14 - | -111 | (KernelVariant::Spin, "Spin"), - | ^^^^^^^^^^^^^ use of undeclared type `KernelVariant` - -error[E0433]: failed to resolve: use of undeclared type `KernelVariant` - --> tests\integration_test.rs:112:14 - | -112 | (KernelVariant::Adaptive, "Adaptive"), - | ^^^^^^^^^^^^^ use of undeclared type `KernelVariant` - -error[E0433]: failed to resolve: use of undeclared type `KernelVariant` - --> tests\integration_test.rs:113:14 - | -113 | (KernelVariant::Timed, "Timed"), - | ^^^^^^^^^^^^^ use of undeclared type `KernelVariant` - -error[E0282]: type annotations needed - --> tests\integration_test.rs:182:30 - | -182 | all_results.push(handle.join().unwrap()); - | ^^^^^^ cannot infer type - -error[E0282]: type annotations needed - --> tests\integration_test.rs:213:15 - | -213 | .map(|d| d.as_secs_f64() * 1_000_000.0) - | ^ - type must be known at this point - | -help: consider giving this closure parameter an explicit type - | -213 | .map(|d: /* Type */| d.as_secs_f64() * 1_000_000.0) - | ++++++++++++ - -error[E0282]: type annotations needed - --> tests\integration_test.rs:216:27 - | -216 | us_latencies.sort_by(|a, b| a.partial_cmp(b).unwrap()); - | ^ - type must be known at this point - | -help: consider giving this closure parameter an explicit type - | -216 | us_latencies.sort_by(|a: /* Type */, b| a.partial_cmp(b).unwrap()); - | ++++++++++++ - -warning: unused variable: `variant` - --> tests\integration_test.rs:300:33 - | -300 | fn create_executor_with_variant(variant: MockKernelVariant) -> MockExecutor { - | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_variant` - | - = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default - -warning: unused variable: `row` - --> tests\integration_test.rs:315:26 - | -315 | fn create_cell_update_at(row: u32, col: u32) -> MockCommand { - | ^^^ help: if this is intentional, prefix it with an underscore: `_row` - -warning: unused variable: `col` - --> tests\integration_test.rs:315:36 - | -315 | fn create_cell_update_at(row: u32, col: u32) -> MockCommand { - | ^^^ help: if this is intentional, prefix it with an underscore: `_col` - -Some errors have detailed explanations: E0277, E0282, E0412, E0425, E0433. -For more information about an error, try `rustc --explain E0277`. -warning: `cudaclaw` (test "integration_test") generated 3 warnings -warning: cudaclaw@0.1.0: Compiling CUDA kernel: "kernels\\executor.cu" -warning: cudaclaw@0.1.0: Successfully compiled "kernels\\executor.cu" -warning: cudaclaw@0.1.0: Compiling CUDA kernel: "kernels\\main.cu" -warning: cudaclaw@0.1.0: Successfully compiled "kernels\\main.cu" -warning: cudaclaw@0.1.0: Compiling CUDA kernel: "kernels\\smart_crdt_demo.cu" -warning: cudaclaw@0.1.0: Successfully compiled "kernels\\smart_crdt_demo.cu" -error: could not compile `cudaclaw` (test "integration_test") due to 30 previous errors; 3 warnings emitted -error[E0277]: the trait bound `T: cust::memory::DeviceCopy` is not satisfied - --> src\bridge.rs:454:18 - | -454 | ) -> CudaResult<(GpuBridge, *mut T)> - | ^^^^^^^^^^^^ the trait `cust::memory::DeviceCopy` is not implemented for `T` - | -note: required by a bound in `bridge::GpuBridge` - --> src\bridge.rs:80:25 - | - 80 | pub struct GpuBridge { - | ^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `GpuBridge` -help: consider further restricting type parameter `T` with trait `DeviceCopy` - | -456 | T: Clone + cust::memory::DeviceCopy, - | ++++++++++++++++++++++++++ - -error[E0277]: `dyn std::error::Error` cannot be sent between threads safely - --> src\dispatcher.rs:611:9 - | -611 | / tokio::task::spawn_blocking(move || { -612 | | let mut disp = dispatcher.lock().unwrap(); -613 | | disp.dispatch_sync(cmd) -614 | | }).await? - | |__________^ `dyn std::error::Error` cannot be sent between threads safely - | - = help: the trait `std::marker::Send` is not implemented for `dyn std::error::Error` - = note: required for `std::ptr::Unique` to implement `std::marker::Send` -note: required because it appears within the type `std::boxed::Box` - --> C:\Users\casey\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\alloc\src\boxed.rs:231:12 - | -231 | pub struct Box< - | ^^^ -note: required because it appears within the type `std::result::Result>` - --> C:\Users\casey\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\core\src\result.rs:557:10 - | -557 | pub enum Result { - | ^^^^^^ -note: required by a bound in `tokio::task::spawn_blocking` - --> C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\tokio-1.50.0\src\task\blocking.rs:223:12 - | -220 | pub fn spawn_blocking(f: F) -> JoinHandle - | -------------- required by a bound in this function -... -223 | R: Send + 'static, - | ^^^^ required by this bound in `spawn_blocking` - -error: pointers cannot be cast to integers during const eval - --> src\cuda_claw.rs:34:13 - | -34 | (&(*ptr).$field as *const _ as usize) - (ptr as usize) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -... -43 | const _ASSERT_CMD_TYPE: [(); offset_of!(Command, cmd_type) - 0] = [(); 0]; - | ----------------------------- in this macro invocation - | - = note: at compile-time, pointers do not have an integer value - = note: avoiding this restriction via `transmute`, `union`, or raw pointers leads to compile-time undefined behavior - = note: this error originates in the macro `offset_of` (in Nightly builds, run with -Z macro-backtrace for more info) - -error: pointers cannot be cast to integers during const eval - --> src\cuda_claw.rs:34:53 - | -34 | (&(*ptr).$field as *const _ as usize) - (ptr as usize) - | ^^^^^^^^^^^^^^ -... -43 | const _ASSERT_CMD_TYPE: [(); offset_of!(Command, cmd_type) - 0] = [(); 0]; - | ----------------------------- in this macro invocation - | - = note: at compile-time, pointers do not have an integer value - = note: avoiding this restriction via `transmute`, `union`, or raw pointers leads to compile-time undefined behavior - = note: this error originates in the macro `offset_of` (in Nightly builds, run with -Z macro-backtrace for more info) - -error: pointers cannot be cast to integers during const eval - --> src\cuda_claw.rs:34:13 - | -34 | (&(*ptr).$field as *const _ as usize) - (ptr as usize) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -... -44 | const _ASSERT_ID: [(); offset_of!(Command, id) - 4] = [(); 0]; - | ----------------------- in this macro invocation - | - = note: at compile-time, pointers do not have an integer value - = note: avoiding this restriction via `transmute`, `union`, or raw pointers leads to compile-time undefined behavior - = note: this error originates in the macro `offset_of` (in Nightly builds, run with -Z macro-backtrace for more info) - -error: pointers cannot be cast to integers during const eval - --> src\cuda_claw.rs:34:53 - | -34 | (&(*ptr).$field as *const _ as usize) - (ptr as usize) - | ^^^^^^^^^^^^^^ -... -44 | const _ASSERT_ID: [(); offset_of!(Command, id) - 4] = [(); 0]; - | ----------------------- in this macro invocation - | - = note: at compile-time, pointers do not have an integer value - = note: avoiding this restriction via `transmute`, `union`, or raw pointers leads to compile-time undefined behavior - = note: this error originates in the macro `offset_of` (in Nightly builds, run with -Z macro-backtrace for more info) - -error[E0793]: reference to packed field is unaligned - --> src\cuda_claw.rs:34:14 - | -34 | (&(*ptr).$field as *const _ as usize) - (ptr as usize) - | ^^^^^^^^^^^^^^ -... -45 | const _ASSERT_TIMESTAMP: [(); offset_of!(Command, timestamp) - 8] = [(); 0]; - | ------------------------------ in this macro invocation - | - = note: packed structs are only aligned by one byte, and many modern architectures penalize unaligned field accesses - = note: creating a misaligned reference is undefined behavior (even if that reference is never dereferenced) - = help: copy the field contents to a local variable, or replace the reference with a raw pointer and use `read_unaligned`/`write_unaligned` (loads and stores via `*p` must be properly aligned even when using raw pointers) - = note: this error originates in the macro `offset_of` (in Nightly builds, run with -Z macro-backtrace for more info) - -error: pointers cannot be cast to integers during const eval - --> src\cuda_claw.rs:34:13 - | -34 | (&(*ptr).$field as *const _ as usize) - (ptr as usize) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -... -45 | const _ASSERT_TIMESTAMP: [(); offset_of!(Command, timestamp) - 8] = [(); 0]; - | ------------------------------ in this macro invocation - | - = note: at compile-time, pointers do not have an integer value - = note: avoiding this restriction via `transmute`, `union`, or raw pointers leads to compile-time undefined behavior - = note: this error originates in the macro `offset_of` (in Nightly builds, run with -Z macro-backtrace for more info) - -error: pointers cannot be cast to integers during const eval - --> src\cuda_claw.rs:34:53 - | -34 | (&(*ptr).$field as *const _ as usize) - (ptr as usize) - | ^^^^^^^^^^^^^^ -... -45 | const _ASSERT_TIMESTAMP: [(); offset_of!(Command, timestamp) - 8] = [(); 0]; - | ------------------------------ in this macro invocation - | - = note: at compile-time, pointers do not have an integer value - = note: avoiding this restriction via `transmute`, `union`, or raw pointers leads to compile-time undefined behavior - = note: this error originates in the macro `offset_of` (in Nightly builds, run with -Z macro-backtrace for more info) - -error: pointers cannot be cast to integers during const eval - --> src\cuda_claw.rs:34:13 - | -34 | (&(*ptr).$field as *const _ as usize) - (ptr as usize) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -... -46 | const _ASSERT_DATA_A: [(); offset_of!(Command, data_a) - 16] = [(); 0]; - | --------------------------- in this macro invocation - | - = note: at compile-time, pointers do not have an integer value - = note: avoiding this restriction via `transmute`, `union`, or raw pointers leads to compile-time undefined behavior - = note: this error originates in the macro `offset_of` (in Nightly builds, run with -Z macro-backtrace for more info) - -error: pointers cannot be cast to integers during const eval - --> src\cuda_claw.rs:34:53 - | -34 | (&(*ptr).$field as *const _ as usize) - (ptr as usize) - | ^^^^^^^^^^^^^^ -... -46 | const _ASSERT_DATA_A: [(); offset_of!(Command, data_a) - 16] = [(); 0]; - | --------------------------- in this macro invocation - | - = note: at compile-time, pointers do not have an integer value - = note: avoiding this restriction via `transmute`, `union`, or raw pointers leads to compile-time undefined behavior - = note: this error originates in the macro `offset_of` (in Nightly builds, run with -Z macro-backtrace for more info) - -error: pointers cannot be cast to integers during const eval - --> src\cuda_claw.rs:34:13 - | -34 | (&(*ptr).$field as *const _ as usize) - (ptr as usize) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -... -47 | const _ASSERT_RESULT_CODE: [(); offset_of!(Command, result_code) - 44] = [(); 0]; - | -------------------------------- in this macro invocation - | - = note: at compile-time, pointers do not have an integer value - = note: avoiding this restriction via `transmute`, `union`, or raw pointers leads to compile-time undefined behavior - = note: this error originates in the macro `offset_of` (in Nightly builds, run with -Z macro-backtrace for more info) - -error: pointers cannot be cast to integers during const eval - --> src\cuda_claw.rs:34:53 - | -34 | (&(*ptr).$field as *const _ as usize) - (ptr as usize) - | ^^^^^^^^^^^^^^ -... -47 | const _ASSERT_RESULT_CODE: [(); offset_of!(Command, result_code) - 44] = [(); 0]; - | -------------------------------- in this macro invocation - | - = note: at compile-time, pointers do not have an integer value - = note: avoiding this restriction via `transmute`, `union`, or raw pointers leads to compile-time undefined behavior - = note: this error originates in the macro `offset_of` (in Nightly builds, run with -Z macro-backtrace for more info) - -error[E0277]: `dyn std::error::Error` cannot be sent between threads safely - --> src\dispatcher.rs:624:9 - | -624 | / tokio::task::spawn_blocking(move || { -625 | | let mut disp = dispatcher.lock().unwrap(); -626 | | disp.dispatch_batch(commands) -627 | | }).await? - | |__________^ `dyn std::error::Error` cannot be sent between threads safely - | - = help: the trait `std::marker::Send` is not implemented for `dyn std::error::Error` - = note: required for `std::ptr::Unique` to implement `std::marker::Send` -note: required because it appears within the type `std::boxed::Box` - --> C:\Users\casey\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\alloc\src\boxed.rs:231:12 - | -231 | pub struct Box< - | ^^^ -note: required because it appears within the type `Result, Box>` - --> C:\Users\casey\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\core\src\result.rs:557:10 - | -557 | pub enum Result { - | ^^^^^^ -note: required by a bound in `tokio::task::spawn_blocking` - --> C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\tokio-1.50.0\src\task\blocking.rs:223:12 - | -220 | pub fn spawn_blocking(f: F) -> JoinHandle - | -------------- required by a bound in this function -... -223 | R: Send + 'static, - | ^^^^ required by this bound in `spawn_blocking` - = note: the full name for the type has been written to 'C:\Users\casey\target\debug\deps\cudaclaw-579e92f1489bbd84.long-type-4457509233750456587.txt' - = note: consider using `--verbose` to print the full type name to the console - -error[E0277]: `*mut cuda_claw::CommandQueueHost` cannot be sent between threads safely - --> src\dispatcher.rs:634:37 - | -634 | tokio::task::spawn_blocking(move || { - | _________---------------------------_^ - | | | - | | required by a bound introduced by this call -635 | | let disp = dispatcher.lock().unwrap(); -636 | | disp.get_stats() -637 | | }).await.unwrap() - | |_________^ `*mut cuda_claw::CommandQueueHost` cannot be sent between threads safely - | - = help: within `cust::memory::UnifiedBuffer`, the trait `std::marker::Send` is not implemented for `*mut cuda_claw::CommandQueueHost` -note: required because it appears within the type `cust::memory::UnifiedPointer` - --> C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cust-0.3.2\src\memory\pointer.rs:346:12 - | -346 | pub struct UnifiedPointer(*mut T); - | ^^^^^^^^^^^^^^ -note: required because it appears within the type `cust::memory::UnifiedBuffer` - --> C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cust-0.3.2\src\memory\unified.rs:338:12 - | -338 | pub struct UnifiedBuffer { - | ^^^^^^^^^^^^^ - = note: required for `std::sync::Mutex>` to implement `std::marker::Sync` - = note: required for `std::sync::Arc>>` to implement `std::marker::Send` -note: required because it appears within the type `dispatcher::GpuDispatcher` - --> src\dispatcher.rs:127:12 - | -127 | pub struct GpuDispatcher { - | ^^^^^^^^^^^^^ - = note: required for `std::sync::Mutex` to implement `std::marker::Sync` - = note: 1 redundant requirement hidden - = note: required for `std::sync::Arc>` to implement `std::marker::Send` -note: required because it's used within this closure - --> src\dispatcher.rs:634:37 - | -634 | tokio::task::spawn_blocking(move || { - | ^^^^^^^ -note: required by a bound in `tokio::task::spawn_blocking` - --> C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\tokio-1.50.0\src\task\blocking.rs:222:28 - | -220 | pub fn spawn_blocking(f: F) -> JoinHandle - | -------------- required by a bound in this function -221 | where -222 | F: FnOnce() -> R + Send + 'static, - | ^^^^ required by this bound in `spawn_blocking` - -error[E0277]: `dyn std::error::Error` cannot be sent between threads safely - --> src\dispatcher.rs:624:9 - | -624 | / tokio::task::spawn_blocking(move || { -625 | | let mut disp = dispatcher.lock().unwrap(); -626 | | disp.dispatch_batch(commands) -627 | | }).await? - | |__________^ `dyn std::error::Error` cannot be sent between threads safely - | - = help: the trait `std::marker::Send` is not implemented for `dyn std::error::Error` - = note: required for `std::ptr::Unique` to implement `std::marker::Send` -note: required because it appears within the type `std::boxed::Box` - --> C:\Users\casey\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\alloc\src\boxed.rs:231:12 - | -231 | pub struct Box< - | ^^^ -note: required because it appears within the type `Result, Box>` - --> C:\Users\casey\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\core\src\result.rs:557:10 - | -557 | pub enum Result { - | ^^^^^^ -note: required by a bound in `tokio::task::spawn_blocking` - --> C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\tokio-1.50.0\src\task\blocking.rs:223:12 - | -220 | pub fn spawn_blocking(f: F) -> JoinHandle - | -------------- required by a bound in this function -... -223 | R: Send + 'static, - | ^^^^ required by this bound in `spawn_blocking` - = note: the full name for the type has been written to 'C:\Users\casey\target\debug\deps\cudaclaw-b698b426a080fcf1.long-type-6049509283619945810.txt' - = note: consider using `--verbose` to print the full type name to the console - -error[E0277]: the trait bound `std::vec::Vec: cust::memory::DeviceCopy` is not satisfied - --> src\agent.rs:154:40 - | -154 | let cells = UnifiedBuffer::new(&cell_data)?; - | ------------------ ^^^^^^^^^^ the trait `cust::memory::DeviceCopy` is not implemented for `std::vec::Vec` - | | - | required by a bound introduced by this call - | - = help: the following other types implement trait `cust::memory::DeviceCopy`: - () - (A, B) - (A, B, C) - (A, B, C, D) - (A, B, C, D, E) - (A, B, C, D, E, F) - (A, B, C, D, E, F, G) - (A, B, C, D, E, F, G, H) - and 59 others -note: required by a bound in `cust::memory::UnifiedBuffer::::new` - --> C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cust-0.3.2\src\memory\unified.rs:342:9 - | -342 | impl UnifiedBuffer { - | ^^^^^^^^^^ required by this bound in `UnifiedBuffer::::new` -... -359 | pub fn new(value: &T, size: usize) -> CudaResult { - | --- required by a bound in this associated function - -error[E0061]: this function takes 2 arguments but 1 argument was supplied - --> src\agent.rs:154:21 - | -154 | let cells = UnifiedBuffer::new(&cell_data)?; - | ^^^^^^^^^^^^^^^^^^------------ argument #2 of type `usize` is missing - | -note: associated function defined here - --> C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cust-0.3.2\src\memory\unified.rs:359:12 - | -359 | pub fn new(value: &T, size: usize) -> CudaResult { - | ^^^ -help: provide the argument - | -154 | let cells = UnifiedBuffer::new(&cell_data, /* usize */)?; - | +++++++++++++ - -error[E0277]: the trait bound `std::vec::Vec: cust::memory::DeviceCopy` is not satisfied - --> src\agent.rs:154:21 - | -154 | let cells = UnifiedBuffer::new(&cell_data)?; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `cust::memory::DeviceCopy` is not implemented for `std::vec::Vec` - | - = help: the following other types implement trait `cust::memory::DeviceCopy`: - () - (A, B) - (A, B, C) - (A, B, C, D) - (A, B, C, D, E) - (A, B, C, D, E, F) - (A, B, C, D, E, F, G) - (A, B, C, D, E, F, G, H) - and 59 others -note: required by a bound in `cust::memory::UnifiedBuffer` - --> C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cust-0.3.2\src\memory\unified.rs:338:29 - | -338 | pub struct UnifiedBuffer { - | ^^^^^^^^^^ required by this bound in `UnifiedBuffer` - -error[E0277]: the trait bound `std::vec::Vec: cust::memory::DeviceCopy` is not satisfied - --> src\agent.rs:154:21 - | -154 | let cells = UnifiedBuffer::new(&cell_data)?; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `cust::memory::DeviceCopy` is not implemented for `std::vec::Vec` - | - = help: the following other types implement trait `cust::memory::DeviceCopy`: - () - (A, B) - (A, B, C) - (A, B, C, D) - (A, B, C, D, E) - (A, B, C, D, E, F) - (A, B, C, D, E, F, G) - (A, B, C, D, E, F, G, H) - and 59 others -note: required by a bound in `cust::memory::UnifiedBuffer` - --> C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cust-0.3.2\src\memory\unified.rs:338:29 - | -338 | pub struct UnifiedBuffer { - | ^^^^^^^^^^ required by this bound in `UnifiedBuffer` - -error[E0308]: mismatched types - --> src\agent.rs:157:13 - | -157 | cells, - | ^^^^^ expected `UnifiedBuffer`, found `UnifiedBuffer>` - | - = note: expected struct `cust::memory::UnifiedBuffer` - found struct `cust::memory::UnifiedBuffer>` - -error[E0609]: no field `commands_processed` on type `std::sync::MutexGuard<'_, cust::memory::UnifiedBuffer>` - --> src\alignment.rs:327:24 - | -327 | (q.commands_processed, q.total_cycles, q.idle_cycles) - | ^^^^^^^^^^^^^^^^^^ unknown field - -error[E0609]: no field `total_cycles` on type `std::sync::MutexGuard<'_, cust::memory::UnifiedBuffer>` - --> src\alignment.rs:327:46 - | -327 | (q.commands_processed, q.total_cycles, q.idle_cycles) - | ^^^^^^^^^^^^ unknown field - -error[E0609]: no field `idle_cycles` on type `std::sync::MutexGuard<'_, cust::memory::UnifiedBuffer>` - --> src\alignment.rs:327:62 - | -327 | (q.commands_processed, q.total_cycles, q.idle_cycles) - | ^^^^^^^^^^^ unknown field - -error[E0609]: no field `total_cycles` on type `std::sync::MutexGuard<'_, cust::memory::UnifiedBuffer>` - --> src\alignment.rs:394:34 - | -394 | let total_cycles = queue.total_cycles; - | ^^^^^^^^^^^^ unknown field - -error[E0609]: no field `idle_cycles` on type `std::sync::MutexGuard<'_, cust::memory::UnifiedBuffer>` - --> src\alignment.rs:395:33 - | -395 | let idle_cycles = queue.idle_cycles; - | ^^^^^^^^^^^ unknown field - -error[E0609]: no field `commands_processed` on type `std::sync::MutexGuard<'_, cust::memory::UnifiedBuffer>` - --> src\alignment.rs:396:38 - | -396 | let current_commands = queue.commands_processed; - | ^^^^^^^^^^^^^^^^^^ unknown field - -error[E0609]: no field `head` on type `std::sync::MutexGuard<'_, cust::memory::UnifiedBuffer>` - --> src\alignment.rs:522:33 - | -522 | let idx = queue.head as usize; - | ^^^^ unknown field - -error[E0609]: no field `commands` on type `cuda_claw::CommandQueueHost` - --> src\alignment.rs:525:34 - | -525 | (*queue_ptr).commands[idx] = shutdown_cmd; - | ^^^^^^^^ unknown field - | - = note: available fields are: `buffer`, `status`, `head`, `tail`, `is_running` ... and 4 others - -error[E0606]: casting `&cust::memory::UnifiedBuffer` as `*const cuda_claw::CommandQueueHost` is invalid - --> src\alignment.rs:524:37 - | -524 | let queue_ptr = &*queue as *const CommandQueueHost as *mut CommandQueueHost; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0061]: this function takes 2 arguments but 1 argument was supplied - --> src\bridge.rs:140:22 - | -140 | let buffer = UnifiedBuffer::new(&data)?; - | ^^^^^^^^^^^^^^^^^^------- argument #2 of type `usize` is missing - | -note: associated function defined here - --> C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cust-0.3.2\src\memory\unified.rs:359:12 - | -359 | pub fn new(value: &T, size: usize) -> CudaResult { - | ^^^ -help: provide the argument - | -140 | let buffer = UnifiedBuffer::new(&data, /* usize */)?; - | +++++++++++++ - -error[E0599]: no method named `as_device_ptr` found for struct `cust::memory::UnifiedBuffer` in the current scope - --> src\bridge.rs:143:33 - | -143 | let device_ptr = buffer.as_device_ptr(); - | ^^^^^^^^^^^^^ method not found in `cust::memory::UnifiedBuffer` - | - ::: C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cust-0.3.2\src\memory\mod.rs:104:8 - | -104 | fn as_device_ptr(&self) -> DevicePointer; - | ------------- the method is available for `cust::memory::UnifiedBuffer` here - | - = help: items from traits can only be used if the trait is in scope -help: trait `GpuBuffer` which provides `as_device_ptr` is implemented but not in scope; perhaps you want to import it - | - 32 + use cust::memory::GpuBuffer; - | - -error[E0061]: this function takes 2 arguments but 1 argument was supplied - --> src\bridge.rs:174:22 - | -174 | let buffer = UnifiedBuffer::new(&data)?; - | ^^^^^^^^^^^^^^^^^^------- argument #2 of type `usize` is missing - | -note: associated function defined here - --> C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cust-0.3.2\src\memory\unified.rs:359:12 - | -359 | pub fn new(value: &T, size: usize) -> CudaResult { - | ^^^ -help: provide the argument - | -174 | let buffer = UnifiedBuffer::new(&data, /* usize */)?; - | +++++++++++++ - -error[E0599]: no method named `as_device_ptr` found for struct `cust::memory::UnifiedBuffer` in the current scope - --> src\bridge.rs:175:33 - | -175 | let device_ptr = buffer.as_device_ptr(); - | ^^^^^^^^^^^^^ method not found in `cust::memory::UnifiedBuffer` - | - ::: C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cust-0.3.2\src\memory\mod.rs:104:8 - | -104 | fn as_device_ptr(&self) -> DevicePointer; - | ------------- the method is available for `cust::memory::UnifiedBuffer` here - | - = help: items from traits can only be used if the trait is in scope -help: trait `GpuBuffer` which provides `as_device_ptr` is implemented but not in scope; perhaps you want to import it - | - 32 + use cust::memory::GpuBuffer; - | - -error[E0061]: this function takes 2 arguments but 1 argument was supplied - --> src\bridge.rs:202:22 - | -202 | let buffer = UnifiedBuffer::new(&data[0])?; - | ^^^^^^^^^^^^^^^^^^---------- argument #2 of type `usize` is missing - | -note: associated function defined here - --> C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cust-0.3.2\src\memory\unified.rs:359:12 - | -359 | pub fn new(value: &T, size: usize) -> CudaResult { - | ^^^ -help: provide the argument - | -202 | let buffer = UnifiedBuffer::new(&data[0], /* usize */)?; - | +++++++++++++ - -error[E0599]: no method named `as_device_ptr` found for struct `cust::memory::UnifiedBuffer` in the current scope - --> src\bridge.rs:203:33 - | -203 | let device_ptr = buffer.as_device_ptr(); - | ^^^^^^^^^^^^^ method not found in `cust::memory::UnifiedBuffer` - | - ::: C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cust-0.3.2\src\memory\mod.rs:104:8 - | -104 | fn as_device_ptr(&self) -> DevicePointer; - | ------------- the method is available for `cust::memory::UnifiedBuffer` here - | - = help: items from traits can only be used if the trait is in scope -help: trait `GpuBuffer` which provides `as_device_ptr` is implemented but not in scope; perhaps you want to import it - | - 32 + use cust::memory::GpuBuffer; - | - -error[E0599]: no method named `as_mut_ptr` found for struct `cust::memory::UnifiedPointer` in the current scope - --> src\bridge.rs:239:25 - | -239 | self.device_ptr.as_mut_ptr() - | ^^^^^^^^^^ method not found in `cust::memory::UnifiedPointer` - -error[E0277]: `T` doesn't implement `std::fmt::Debug` - --> src\bridge.rs:396:34 - | -396 | .field("device_ptr", &self.device_ptr) - | ^^^^^^^^^^^^^^^^ the trait `std::fmt::Debug` is not implemented for `T` - | - = note: required for `cust::memory::UnifiedPointer` to implement `std::fmt::Debug` - = note: required for the cast from `&cust::memory::UnifiedPointer` to `&dyn std::fmt::Debug` -help: consider further restricting type parameter `T` with trait `Debug` - | -391 | impl fmt::Debug for GpuBridge { - | +++++++++++++++++ - -error[E0277]: the trait bound `T: cust::memory::DeviceCopy` is not satisfied - --> src\bridge.rs:458:40 - | -458 | let bridge = GpuBridge::with_value(data.clone())?; - | --------------------- ^^^^^^^^^^^^ the trait `cust::memory::DeviceCopy` is not implemented for `T` - | | - | required by a bound introduced by this call - | -note: required by a bound in `bridge::GpuBridge::::with_value` - --> src\bridge.rs:88:9 - | - 88 | impl GpuBridge { - | ^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `GpuBridge::::with_value` -... -165 | pub fn with_value(data: T) -> CudaResult - | ---------- required by a bound in this associated function -help: consider further restricting type parameter `T` with trait `DeviceCopy` - | -456 | T: Clone + cust::memory::DeviceCopy, - | ++++++++++++++++++++++++++ - -error[E0277]: the trait bound `T: cust::memory::DeviceCopy` is not satisfied - --> src\bridge.rs:458:18 - | -458 | let bridge = GpuBridge::with_value(data.clone())?; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `cust::memory::DeviceCopy` is not implemented for `T` - | -note: required by a bound in `bridge::GpuBridge` - --> src\bridge.rs:80:25 - | - 80 | pub struct GpuBridge { - | ^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `GpuBridge` -help: consider further restricting type parameter `T` with trait `DeviceCopy` - | -456 | T: Clone + cust::memory::DeviceCopy, - | ++++++++++++++++++++++++++ - -error[E0277]: the trait bound `T: cust::memory::DeviceCopy` is not satisfied - --> src\bridge.rs:458:18 - | -458 | let bridge = GpuBridge::with_value(data.clone())?; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `cust::memory::DeviceCopy` is not implemented for `T` - | -note: required by a bound in `bridge::GpuBridge` - --> src\bridge.rs:80:25 - | - 80 | pub struct GpuBridge { - | ^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `GpuBridge` -help: consider further restricting type parameter `T` with trait `DeviceCopy` - | -456 | T: Clone + cust::memory::DeviceCopy, - | ++++++++++++++++++++++++++ - -error[E0599]: the method `as_device_ptr` exists for struct `bridge::GpuBridge`, but its trait bounds were not satisfied - --> src\bridge.rs:459:29 - | - 80 | pub struct GpuBridge { - | ------------------------------------------------- method `as_device_ptr` not found for this struct -... -459 | let device_ptr = bridge.as_device_ptr(); - | ^^^^^^^^^^^^^ method cannot be called on `bridge::GpuBridge` due to unsatisfied trait bounds - | -note: trait bound `T: cust::memory::DeviceCopy` was not satisfied - --> src\bridge.rs:88:9 - | - 88 | impl GpuBridge { - | ^^^^^^^^^^^^^^^^^^^^^^^^ ------------ - | | - | unsatisfied trait bound introduced here -help: consider restricting the type parameter to satisfy the trait bound - | -456 | T: Clone, T: cust::memory::DeviceCopy - | +++++++++++++++++++++++++++ - -error[E0277]: the trait bound `T: cust::memory::DeviceCopy` is not satisfied - --> src\bridge.rs:460:5 - | -460 | Ok((bridge, device_ptr)) - | ^^ the trait `cust::memory::DeviceCopy` is not implemented for `T` - | -note: required by a bound in `bridge::GpuBridge` - --> src\bridge.rs:80:25 - | - 80 | pub struct GpuBridge { - | ^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `GpuBridge` -help: consider further restricting type parameter `T` with trait `DeviceCopy` - | -456 | T: Clone + cust::memory::DeviceCopy, - | ++++++++++++++++++++++++++ - -error[E0277]: the trait bound `T: cust::memory::DeviceCopy` is not satisfied - --> src\bridge.rs:460:5 - | -460 | Ok((bridge, device_ptr)) - | ^^^^^^^^^^^^^^^^^^^^^^^^ the trait `cust::memory::DeviceCopy` is not implemented for `T` - | -note: required by a bound in `bridge::GpuBridge` - --> src\bridge.rs:80:25 - | - 80 | pub struct GpuBridge { - | ^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `GpuBridge` -help: consider further restricting type parameter `T` with trait `DeviceCopy` - | -456 | T: Clone + cust::memory::DeviceCopy, - | ++++++++++++++++++++++++++ - -warning: use of deprecated associated function `cust::module::Module::load_from_string`: load_from_string was an inconsistent name with inconsistent params, use from_ptx/from_ptx_cstr, passing - an empty slice of options (usually) - - --> src\cuda_claw.rs:308:30 - | -308 | let module = Module::load_from_string(&ptx)?; - | ^^^^^^^^^^^^^^^^ - | - = note: `#[warn(deprecated)]` on by default - -error[E0061]: this function takes 2 arguments but 1 argument was supplied - --> src\cuda_claw.rs:312:21 - | -312 | let queue = UnifiedBuffer::new(&queue_data)?; - | ^^^^^^^^^^^^^^^^^^------------- argument #2 of type `usize` is missing - | -note: associated function defined here - --> C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cust-0.3.2\src\memory\unified.rs:359:12 - | -359 | pub fn new(value: &T, size: usize) -> CudaResult { - | ^^^ -help: provide the argument - | -312 | let queue = UnifiedBuffer::new(&queue_data, /* usize */)?; - | +++++++++++++ - -error[E0061]: this function takes 2 arguments but 0 arguments were supplied - --> src\cuda_claw.rs:315:22 - | -315 | let stream = Stream::new()?; - | ^^^^^^^^^^^-- two arguments of type `cust::prelude::StreamFlags` and `std::option::Option` are missing - | -note: associated function defined here - --> C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cust-0.3.2\src\stream.rs:92:12 - | - 92 | pub fn new(mut flags: StreamFlags, priority: Option) -> CudaResult { - | ^^^ -help: provide the arguments - | -315 | let stream = Stream::new(/* cust::prelude::StreamFlags */, /* std::option::Option */)?; - | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -error[E0277]: the trait bound `std::ffi::CString: std::convert::AsRef` is not satisfied - --> src\cuda_claw.rs:329:46 - | -329 | let func = self.module.get_function(&CString::new("init_command_queue")?)?; - | ------------ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `std::convert::AsRef` is not implemented for `std::ffi::CString` - | | - | required by a bound introduced by this call - | - = help: the trait `AsRef` is not implemented for `std::ffi::CString` - but trait `AsRef` is implemented for it - = help: for that trait implementation, expected `std::ffi::CStr`, found `str` - = note: required for `&std::ffi::CString` to implement `std::convert::AsRef` -note: required by a bound in `cust::module::Module::get_function` - --> C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cust-0.3.2\src\module.rs:424:28 - | -424 | pub fn get_function>(&'_ self, name: T) -> CudaResult> { - | ^^^^^^^^^^ required by this bound in `Module::get_function` - -error[E0599]: no method named `as_device_ptr` found for struct `cust::memory::UnifiedBuffer` in the current scope - --> src\cuda_claw.rs:330:36 - | -330 | let queue_ptr = self.queue.as_device_ptr(); - | ^^^^^^^^^^^^^ method not found in `cust::memory::UnifiedBuffer` - | - ::: C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cust-0.3.2\src\memory\mod.rs:104:8 - | -104 | fn as_device_ptr(&self) -> DevicePointer; - | ------------- the method is available for `cust::memory::UnifiedBuffer` here - | - = help: items from traits can only be used if the trait is in scope -help: trait `GpuBuffer` which provides `as_device_ptr` is implemented but not in scope; perhaps you want to import it - | - 16 + use cust::memory::GpuBuffer; - | - -error[E0277]: the trait bound `std::ffi::CString: std::convert::AsRef` is not satisfied - --> src\cuda_claw.rs:354:46 - | -354 | let func = self.module.get_function(&CString::new("persistent_worker")?)?; - | ------------ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `std::convert::AsRef` is not implemented for `std::ffi::CString` - | | - | required by a bound introduced by this call - | - = help: the trait `AsRef` is not implemented for `std::ffi::CString` - but trait `AsRef` is implemented for it - = help: for that trait implementation, expected `std::ffi::CStr`, found `str` - = note: required for `&std::ffi::CString` to implement `std::convert::AsRef` -note: required by a bound in `cust::module::Module::get_function` - --> C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cust-0.3.2\src\module.rs:424:28 - | -424 | pub fn get_function>(&'_ self, name: T) -> CudaResult> { - | ^^^^^^^^^^ required by this bound in `Module::get_function` - -error[E0599]: no method named `as_device_ptr` found for struct `cust::memory::UnifiedBuffer` in the current scope - --> src\cuda_claw.rs:355:36 - | -355 | let queue_ptr = self.queue.as_device_ptr(); - | ^^^^^^^^^^^^^ method not found in `cust::memory::UnifiedBuffer` - | - ::: C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cust-0.3.2\src\memory\mod.rs:104:8 - | -104 | fn as_device_ptr(&self) -> DevicePointer; - | ------------- the method is available for `cust::memory::UnifiedBuffer` here - | - = help: items from traits can only be used if the trait is in scope -help: trait `GpuBuffer` which provides `as_device_ptr` is implemented but not in scope; perhaps you want to import it - | - 16 + use cust::memory::GpuBuffer; - | - -error[E0599]: no method named `clone` found for struct `cust::memory::UnifiedBuffer` in the current scope - --> src\cuda_claw.rs:371:40 - | -371 | let mut queue_mut = self.queue.clone(); - | ^^^^^ - | -help: there is a method `clone_into` with a similar name, but with different arguments - --> C:\Users\casey\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\alloc\src\borrow.rs:79:5 - | - 79 | fn clone_into(&self, target: &mut Self::Owned) { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0277]: the trait bound `std::ffi::CString: std::convert::AsRef` is not satisfied - --> src\cuda_claw.rs:384:46 - | -384 | let func = self.module.get_function(&CString::new("set_polling_strategy")?)?; - | ------------ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `std::convert::AsRef` is not implemented for `std::ffi::CString` - | | - | required by a bound introduced by this call - | - = help: the trait `AsRef` is not implemented for `std::ffi::CString` - but trait `AsRef` is implemented for it - = help: for that trait implementation, expected `std::ffi::CStr`, found `str` - = note: required for `&std::ffi::CString` to implement `std::convert::AsRef` -note: required by a bound in `cust::module::Module::get_function` - --> C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cust-0.3.2\src\module.rs:424:28 - | -424 | pub fn get_function>(&'_ self, name: T) -> CudaResult> { - | ^^^^^^^^^^ required by this bound in `Module::get_function` - -error[E0599]: no method named `as_device_ptr` found for struct `cust::memory::UnifiedBuffer` in the current scope - --> src\cuda_claw.rs:385:36 - | -385 | let queue_ptr = self.queue.as_device_ptr(); - | ^^^^^^^^^^^^^ method not found in `cust::memory::UnifiedBuffer` - | - ::: C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cust-0.3.2\src\memory\mod.rs:104:8 - | -104 | fn as_device_ptr(&self) -> DevicePointer; - | ------------- the method is available for `cust::memory::UnifiedBuffer` here - | - = help: items from traits can only be used if the trait is in scope -help: trait `GpuBuffer` which provides `as_device_ptr` is implemented but not in scope; perhaps you want to import it - | - 16 + use cust::memory::GpuBuffer; - | - -error[E0599]: no method named `clone` found for struct `cust::memory::UnifiedBuffer` in the current scope - --> src\cuda_claw.rs:405:32 - | -405 | let queue = self.queue.clone(); - | ^^^^^ - | -help: there is a method `clone_into` with a similar name, but with different arguments - --> C:\Users\casey\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\alloc\src\borrow.rs:79:5 - | - 79 | fn clone_into(&self, target: &mut Self::Owned) { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0599]: no method named `clone` found for struct `cust::memory::UnifiedBuffer` in the current scope - --> src\cuda_claw.rs:419:40 - | -419 | let mut queue_mut = self.queue.clone(); - | ^^^^^ - | -help: there is a method `clone_into` with a similar name, but with different arguments - --> C:\Users\casey\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\alloc\src\borrow.rs:79:5 - | - 79 | fn clone_into(&self, target: &mut Self::Owned) { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0599]: no method named `as_device_ptr` found for struct `cust::memory::UnifiedBuffer` in the current scope - --> src\cuda_claw.rs:443:36 - | -443 | let queue_ptr = self.queue.as_device_ptr(); - | ^^^^^^^^^^^^^ method not found in `cust::memory::UnifiedBuffer` - | - ::: C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cust-0.3.2\src\memory\mod.rs:104:8 - | -104 | fn as_device_ptr(&self) -> DevicePointer; - | ------------- the method is available for `cust::memory::UnifiedBuffer` here - | - = help: items from traits can only be used if the trait is in scope -help: trait `GpuBuffer` which provides `as_device_ptr` is implemented but not in scope; perhaps you want to import it - | - 16 + use cust::memory::GpuBuffer; - | - -error[E0599]: no method named `clone` found for struct `cust::memory::UnifiedBuffer` in the current scope - --> src\cuda_claw.rs:490:36 - | -490 | let queue = self.queue.clone(); - | ^^^^^ - | -help: there is a method `clone_into` with a similar name, but with different arguments - --> C:\Users\casey\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\alloc\src\borrow.rs:79:5 - | - 79 | fn clone_into(&self, target: &mut Self::Owned) { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0599]: no method named `clone` found for struct `cust::memory::UnifiedBuffer` in the current scope - --> src\cuda_claw.rs:497:48 - | -497 | let mut queue_mut = self.queue.clone(); - | ^^^^^ - | -help: there is a method `clone_into` with a similar name, but with different arguments - --> C:\Users\casey\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\alloc\src\borrow.rs:79:5 - | - 79 | fn clone_into(&self, target: &mut Self::Owned) { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0599]: no method named `clone` found for struct `cust::memory::UnifiedBuffer` in the current scope - --> src\cuda_claw.rs:550:40 - | -550 | let mut queue_mut = self.queue.clone(); - | ^^^^^ - | -help: there is a method `clone_into` with a similar name, but with different arguments - --> C:\Users\casey\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\alloc\src\borrow.rs:79:5 - | - 79 | fn clone_into(&self, target: &mut Self::Owned) { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0277]: the trait bound `std::ffi::CString: std::convert::AsRef` is not satisfied - --> src\cuda_claw.rs:562:46 - | -562 | let func = self.module.get_function(&CString::new("get_worker_stats")?)?; - | ------------ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `std::convert::AsRef` is not implemented for `std::ffi::CString` - | | - | required by a bound introduced by this call - | - = help: the trait `AsRef` is not implemented for `std::ffi::CString` - but trait `AsRef` is implemented for it - = help: for that trait implementation, expected `std::ffi::CStr`, found `str` - = note: required for `&std::ffi::CString` to implement `std::convert::AsRef` -note: required by a bound in `cust::module::Module::get_function` - --> C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cust-0.3.2\src\module.rs:424:28 - | -424 | pub fn get_function>(&'_ self, name: T) -> CudaResult> { - | ^^^^^^^^^^ required by this bound in `Module::get_function` - -error[E0599]: no method named `as_device_ptr` found for struct `cust::memory::UnifiedBuffer` in the current scope - --> src\cuda_claw.rs:563:36 - | -563 | let queue_ptr = self.queue.as_device_ptr(); - | ^^^^^^^^^^^^^ method not found in `cust::memory::UnifiedBuffer` - | - ::: C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cust-0.3.2\src\memory\mod.rs:104:8 - | -104 | fn as_device_ptr(&self) -> DevicePointer; - | ------------- the method is available for `cust::memory::UnifiedBuffer` here - | - = help: items from traits can only be used if the trait is in scope -help: trait `GpuBuffer` which provides `as_device_ptr` is implemented but not in scope; perhaps you want to import it - | - 16 + use cust::memory::GpuBuffer; - | - -error[E0277]: the trait bound `std::ffi::CString: std::convert::AsRef` is not satisfied - --> src\cuda_claw.rs:600:46 - | -600 | let func = self.module.get_function(&CString::new("measure_warp_metrics")?)?; - | ------------ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `std::convert::AsRef` is not implemented for `std::ffi::CString` - | | - | required by a bound introduced by this call - | - = help: the trait `AsRef` is not implemented for `std::ffi::CString` - but trait `AsRef` is implemented for it - = help: for that trait implementation, expected `std::ffi::CStr`, found `str` - = note: required for `&std::ffi::CString` to implement `std::convert::AsRef` -note: required by a bound in `cust::module::Module::get_function` - --> C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cust-0.3.2\src\module.rs:424:28 - | -424 | pub fn get_function>(&'_ self, name: T) -> CudaResult> { - | ^^^^^^^^^^ required by this bound in `Module::get_function` - -error[E0599]: no method named `as_device_ptr` found for struct `cust::memory::UnifiedBuffer` in the current scope - --> src\cuda_claw.rs:601:36 - | -601 | let queue_ptr = self.queue.as_device_ptr(); - | ^^^^^^^^^^^^^ method not found in `cust::memory::UnifiedBuffer` - | - ::: C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cust-0.3.2\src\memory\mod.rs:104:8 - | -104 | fn as_device_ptr(&self) -> DevicePointer; - | ------------- the method is available for `cust::memory::UnifiedBuffer` here - | - = help: items from traits can only be used if the trait is in scope -help: trait `GpuBuffer` which provides `as_device_ptr` is implemented but not in scope; perhaps you want to import it - | - 16 + use cust::memory::GpuBuffer; - | - -error[E0599]: no method named `clone` found for struct `cust::memory::UnifiedBuffer` in the current scope - --> src\cuda_claw.rs:632:32 - | -632 | let queue = self.queue.clone(); - | ^^^^^ - | -help: there is a method `clone_into` with a similar name, but with different arguments - --> C:\Users\casey\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\alloc\src\borrow.rs:79:5 - | - 79 | fn clone_into(&self, target: &mut Self::Owned) { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0609]: no field `head` on type `std::sync::MutexGuard<'_, cust::memory::UnifiedBuffer>` - --> src\dispatcher.rs:329:30 - | -329 | let head = queue.head; - | ^^^^ unknown field - -error[E0609]: no field `tail` on type `std::sync::MutexGuard<'_, cust::memory::UnifiedBuffer>` - --> src\dispatcher.rs:330:30 - | -330 | let tail = queue.tail; - | ^^^^ unknown field - -error[E0609]: no field `head` on type `std::sync::MutexGuard<'_, cust::memory::UnifiedBuffer>` - --> src\dispatcher.rs:381:30 - | -381 | let head = queue.head; - | ^^^^ unknown field - -error[E0609]: no field `tail` on type `std::sync::MutexGuard<'_, cust::memory::UnifiedBuffer>` - --> src\dispatcher.rs:382:30 - | -382 | let tail = queue.tail; - | ^^^^ unknown field - -error[E0609]: no field `head` on type `std::sync::MutexGuard<'_, cust::memory::UnifiedBuffer>` - --> src\dispatcher.rs:421:25 - | -421 | let idx = queue.head as usize; - | ^^^^ unknown field - -error[E0609]: no field `commands` on type `std::sync::MutexGuard<'_, cust::memory::UnifiedBuffer>` - --> src\dispatcher.rs:422:15 - | -422 | queue.commands[idx] = cmd; - | ^^^^^^^^ unknown field - -error[E0609]: no field `head` on type `std::sync::MutexGuard<'_, cust::memory::UnifiedBuffer>` - --> src\dispatcher.rs:423:15 - | -423 | queue.head = (queue.head + 1) % crate::cuda_claw::QUEUE_SIZE as u32; - | ^^^^ unknown field - -error[E0609]: no field `head` on type `std::sync::MutexGuard<'_, cust::memory::UnifiedBuffer>` - --> src\dispatcher.rs:423:29 - | -423 | queue.head = (queue.head + 1) % crate::cuda_claw::QUEUE_SIZE as u32; - | ^^^^ unknown field - -error[E0609]: no field `status` on type `std::sync::MutexGuard<'_, cust::memory::UnifiedBuffer>` - --> src\dispatcher.rs:431:15 - | -431 | queue.status = QueueStatus::Ready as u32; - | ^^^^^^ unknown field - -error[E0609]: no field `status` on type `std::sync::MutexGuard<'_, cust::memory::UnifiedBuffer>` - --> src\dispatcher.rs:457:22 - | -457 | if queue.status == QueueStatus::Done as u32 { - | ^^^^^^ unknown field - -error[E0609]: no field `tail` on type `std::sync::MutexGuard<'_, cust::memory::UnifiedBuffer>` - --> src\dispatcher.rs:458:35 - | -458 | let idx = ((queue.tail + crate::cuda_claw::QUEUE_SIZE as u32 - 1) % crate::cuda_claw::QUEUE_SIZE as u32) as usize; - | ^^^^ unknown field - -error[E0609]: no field `commands` on type `std::sync::MutexGuard<'_, cust::memory::UnifiedBuffer>` - --> src\dispatcher.rs:459:33 - | -459 | let cmd = queue.commands[idx]; - | ^^^^^^^^ unknown field - -error[E0609]: no field `status` on type `std::sync::MutexGuard<'_, cust::memory::UnifiedBuffer>` - --> src\dispatcher.rs:465:31 - | -465 | queue_mut.status = QueueStatus::Idle as u32; - | ^^^^^^ unknown field - -error[E0609]: no field `commands` on type `&cuda_claw::CommandQueueHost` - --> src\dispatcher.rs:835:49 - | -835 | std::ptr::write_volatile(&mut queue.commands[slot as usize] as *mut Command, cmd); - | ^^^^^^^^ unknown field - | - = note: available fields are: `buffer`, `status`, `head`, `tail`, `is_running` ... and 4 others - -error[E0599]: no variant or associated item named `NOOP` found for enum `cuda_claw::CommandType` in the current scope - --> src\dispatcher.rs:1019:49 - | -1019 | let cmd = Command::new(CommandType::NOOP, (i % 1024) as u32); - | ^^^^ variant or associated item not found in `cuda_claw::CommandType` - | - ::: src\cuda_claw.rs:86:1 - | - 86 | pub enum CommandType { - | -------------------- variant or associated item `NOOP` not found for this enum - | -help: there is a variant with a similar name - | -1019 - let cmd = Command::new(CommandType::NOOP, (i % 1024) as u32); -1019 + let cmd = Command::new(CommandType::NoOp; - | - -error[E0599]: no variant or associated item named `NOOP` found for enum `cuda_claw::CommandType` in the current scope - --> src\dispatcher.rs:1038:45 - | -1038 | let cmd = Command::new(CommandType::NOOP, (i % 1024) as u32); - | ^^^^ variant or associated item not found in `cuda_claw::CommandType` - | - ::: src\cuda_claw.rs:86:1 - | - 86 | pub enum CommandType { - | -------------------- variant or associated item `NOOP` not found for this enum - | -help: there is a variant with a similar name - | -1038 - let cmd = Command::new(CommandType::NOOP, (i % 1024) as u32); -1038 + let cmd = Command::new(CommandType::NoOp; - | - -error[E0599]: no variant or associated item named `NOOP` found for enum `cuda_claw::CommandType` in the current scope - --> src\dispatcher.rs:1150:31 - | -1150 | Command::new(CommandType::NOOP, id) - | ^^^^ variant or associated item not found in `cuda_claw::CommandType` - | - ::: src\cuda_claw.rs:86:1 - | - 86 | pub enum CommandType { - | -------------------- variant or associated item `NOOP` not found for this enum - | -help: there is a variant with a similar name - | -1150 - Command::new(CommandType::NOOP, id) -1150 + Command::new(CommandType::NoOp - | - -error[E0599]: no variant or associated item named `NOOP` found for enum `cuda_claw::CommandType` in the current scope - --> src\dispatcher.rs:1156:44 - | -1156 | .map(|i| Command::new(CommandType::NOOP, i as u32)) - | ^^^^ variant or associated item not found in `cuda_claw::CommandType` - | - ::: src\cuda_claw.rs:86:1 - | - 86 | pub enum CommandType { - | -------------------- variant or associated item `NOOP` not found for this enum - | -help: there is a variant with a similar name - | -1156 - .map(|i| Command::new(CommandType::NOOP, i as u32)) -1156 + .map(|i| Command::new(CommandType::NoOp) - | - -error[E0609]: no field `commands` on type `&mut cuda_claw::CommandQueueHost` - --> src\lock_free_queue.rs:198:19 - | -198 | queue.commands[index as usize] = cmd; - | ^^^^^^^^ unknown field - | - = note: available fields are: `buffer`, `status`, `head`, `tail`, `is_running` ... and 4 others - -error[E0609]: no field `commands_pushed` on type `&mut cuda_claw::CommandQueueHost` - --> src\lock_free_queue.rs:208:45 - | -208 | atomic_fetch_add_u64(&queue.commands_pushed as *const u64, 1); - | ^^^^^^^^^^^^^^^ unknown field - | -help: a field with a similar name exists - | -208 - atomic_fetch_add_u64(&queue.commands_pushed as *const u64, 1); -208 + atomic_fetch_add_u64(&queue.commands_sent as *const u64, 1); - | - -error[E0599]: no variant or associated item named `STATUS_IDLE` found for enum `cuda_claw::QueueStatus` in the current scope - --> src\lock_free_queue.rs:211:49 - | -211 | if queue.status == QueueStatus::STATUS_IDLE { - | ^^^^^^^^^^^ variant or associated item not found in `cuda_claw::QueueStatus` - | - ::: src\cuda_claw.rs:53:1 - | - 53 | pub enum QueueStatus { - | -------------------- variant or associated item `STATUS_IDLE` not found for this enum - -error[E0599]: no variant or associated item named `STATUS_READY` found for enum `cuda_claw::QueueStatus` in the current scope - --> src\lock_free_queue.rs:212:49 - | -212 | queue.status = QueueStatus::STATUS_READY; - | ^^^^^^^^^^^^ variant or associated item not found in `cuda_claw::QueueStatus` - | - ::: src\cuda_claw.rs:53:1 - | - 53 | pub enum QueueStatus { - | -------------------- variant or associated item `STATUS_READY` not found for this enum - -error[E0609]: no field `commands_pushed` on type `&cuda_claw::CommandQueueHost` - --> src\lock_free_queue.rs:399:19 - | -399 | queue.commands_pushed, - | ^^^^^^^^^^^^^^^ unknown field - | -help: a field with a similar name exists - | -399 - queue.commands_pushed, -399 + queue.commands_sent, - | - -error[E0609]: no field `commands_popped` on type `&cuda_claw::CommandQueueHost` - --> src\lock_free_queue.rs:400:19 - | -400 | queue.commands_popped, - | ^^^^^^^^^^^^^^^ unknown field - | -help: a field with a similar name exists - | -400 - queue.commands_popped, -400 + queue.commands_processed, - | - -error[E0599]: no variant or associated item named `STATUS_IDLE` found for enum `cuda_claw::QueueStatus` in the current scope - --> src\lock_free_queue.rs:427:37 - | -427 | queue.status = QueueStatus::STATUS_IDLE; - | ^^^^^^^^^^^ variant or associated item not found in `cuda_claw::QueueStatus` - | - ::: src\cuda_claw.rs:53:1 - | - 53 | pub enum QueueStatus { - | -------------------- variant or associated item `STATUS_IDLE` not found for this enum - -error[E0599]: no method named `as_device_ptr` found for struct `cust::memory::UnifiedBuffer` in the current scope - --> src\volatile_dispatcher.rs:112:31 - | -112 | let queue_ptr = queue.as_device_ptr().as_mut_ptr(); - | ^^^^^^^^^^^^^ method not found in `cust::memory::UnifiedBuffer` - | - ::: C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cust-0.3.2\src\memory\mod.rs:104:8 - | -104 | fn as_device_ptr(&self) -> DevicePointer; - | ------------- the method is available for `cust::memory::UnifiedBuffer` here - | - = help: items from traits can only be used if the trait is in scope -help: trait `GpuBuffer` which provides `as_device_ptr` is implemented but not in scope; perhaps you want to import it - | - 18 + use cust::memory::GpuBuffer; - | - -error[E0609]: no field `commands` on type `&mut cuda_claw::CommandQueueHost` - --> src\volatile_dispatcher.rs:175:44 - | -175 | ptr::write_volatile(&mut queue.commands[head_idx], cmd); - | ^^^^^^^^ unknown field - | - = note: available fields are: `buffer`, `status`, `head`, `tail`, `is_running` ... and 4 others - -error[E0599]: no method named `unsigned_ilog2` found for type `u128` in the current scope - --> src\volatile_dispatcher.rs:467:61 - | -467 | let std_dev_ns = (variance_ns / iterations as u128).unsigned_ilog2() as u64; - | ^^^^^^^^^^^^^^ - | -help: there is a method `unsigned` with a similar name - | -467 - let std_dev_ns = (variance_ns / iterations as u128).unsigned_ilog2() as u64; -467 + let std_dev_ns = (variance_ns / iterations as u128).unsigned() as u64; - | - -error[E0061]: this function takes 2 arguments but 1 argument was supplied - --> src\dispatcher.rs:1174:21 - | -1174 | let queue = UnifiedBuffer::new(&queue_data).unwrap(); - | ^^^^^^^^^^^^^^^^^^------------- argument #2 of type `usize` is missing - | -note: associated function defined here - --> C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cust-0.3.2\src\memory\unified.rs:359:12 - | - 359 | pub fn new(value: &T, size: usize) -> CudaResult { - | ^^^ -help: provide the argument - | -1174 | let queue = UnifiedBuffer::new(&queue_data, /* usize */).unwrap(); - | +++++++++++++ - -error[E0061]: this function takes 2 arguments but 1 argument was supplied - --> src\dispatcher.rs:1187:21 - | -1187 | let queue = UnifiedBuffer::new(&queue_data).unwrap(); - | ^^^^^^^^^^^^^^^^^^------------- argument #2 of type `usize` is missing - | -note: associated function defined here - --> C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cust-0.3.2\src\memory\unified.rs:359:12 - | - 359 | pub fn new(value: &T, size: usize) -> CudaResult { - | ^^^ -help: provide the argument - | -1187 | let queue = UnifiedBuffer::new(&queue_data, /* usize */).unwrap(); - | +++++++++++++ - -error[E0061]: this function takes 2 arguments but 1 argument was supplied - --> src\main.rs:330:21 - | -330 | let mut queue = UnifiedBuffer::new(&queue_data)?; - | ^^^^^^^^^^^^^^^^^^------------- argument #2 of type `usize` is missing - | -note: associated function defined here - --> C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cust-0.3.2\src\memory\unified.rs:359:12 - | -359 | pub fn new(value: &T, size: usize) -> CudaResult { - | ^^^ -help: provide the argument - | -330 | let mut queue = UnifiedBuffer::new(&queue_data, /* usize */)?; - | +++++++++++++ - -error[E0599]: no method named `as_device_ptr` found for struct `cust::memory::UnifiedBuffer` in the current scope - --> src\main.rs:332:59 - | -332 | println!(" ✓ CommandQueue allocated at {:p}", queue.as_device_ptr()); - | ^^^^^^^^^^^^^ method not found in `cust::memory::UnifiedBuffer` - | - ::: C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cust-0.3.2\src\memory\mod.rs:104:8 - | -104 | fn as_device_ptr(&self) -> DevicePointer; - | ------------- the method is available for `cust::memory::UnifiedBuffer` here - | - = help: items from traits can only be used if the trait is in scope -help: trait `GpuBuffer` which provides `as_device_ptr` is implemented but not in scope; perhaps you want to import it - | - 1 + use cust::memory::GpuBuffer; - | - -error[E0599]: no method named `clone` found for struct `cust::memory::UnifiedBuffer` in the current scope - --> src\main.rs:337:31 - | -337 | let queue_ref = queue.clone(); - | ^^^^^ - | -help: there is a method `clone_into` with a similar name, but with different arguments - --> C:\Users\casey\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\alloc\src\borrow.rs:79:5 - | - 79 | fn clone_into(&self, target: &mut Self::Owned) { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0308]: mismatched types - --> src\main.rs:362:58 - | -362 | let success = LockFreeCommandQueue::push_command(queue_mut, cmd1); - | ---------------------------------- ^^^^^^^^^ expected `&mut CommandQueueHost`, found `&mut [CommandQueueHost]` - | | - | arguments to this function are incorrect - | - = note: expected mutable reference `&mut cuda_claw::CommandQueueHost` - found mutable reference `&mut [cuda_claw::CommandQueueHost]` -note: associated function defined here - --> src\lock_free_queue.rs:179:12 - | -179 | pub fn push_command(queue: &mut CommandQueueHost, cmd: Command) -> bool { - | ^^^^^^^^^^^^ ---------------------------- - -error[E0599]: no method named `clone` found for struct `cust::memory::UnifiedBuffer` in the current scope - --> src\main.rs:369:31 - | -369 | let queue_ref = queue.clone(); - | ^^^^^ - | -help: there is a method `clone_into` with a similar name, but with different arguments - --> C:\Users\casey\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\alloc\src\borrow.rs:79:5 - | - 79 | fn clone_into(&self, target: &mut Self::Owned) { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0308]: mismatched types - --> src\main.rs:397:64 - | -397 | let pushed = LockFreeCommandQueue::push_commands_batch(queue_mut, &batch_commands); - | ----------------------------------------- ^^^^^^^^^ expected `&mut CommandQueueHost`, found `&mut [CommandQueueHost]` - | | - | arguments to this function are incorrect - | - = note: expected mutable reference `&mut cuda_claw::CommandQueueHost` - found mutable reference `&mut [cuda_claw::CommandQueueHost]` -note: associated function defined here - --> src\lock_free_queue.rs:248:12 - | -248 | pub fn push_commands_batch(queue: &mut CommandQueueHost, cmds: &[Command]) -> u32 { - | ^^^^^^^^^^^^^^^^^^^ ---------------------------- - -error[E0599]: no method named `clone` found for struct `cust::memory::UnifiedBuffer` in the current scope - --> src\main.rs:404:31 - | -404 | let queue_ref = queue.clone(); - | ^^^^^ - | -help: there is a method `clone_into` with a similar name, but with different arguments - --> C:\Users\casey\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\alloc\src\borrow.rs:79:5 - | - 79 | fn clone_into(&self, target: &mut Self::Owned) { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0061]: this function takes 2 arguments but 1 argument was supplied - --> src\dispatcher.rs:1555:25 - | -1555 | let queue = UnifiedBuffer::new(&queue_data).unwrap(); - | ^^^^^^^^^^^^^^^^^^------------- argument #2 of type `usize` is missing - | -note: associated function defined here - --> C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cust-0.3.2\src\memory\unified.rs:359:12 - | - 359 | pub fn new(value: &T, size: usize) -> CudaResult { - | ^^^ -help: provide the argument - | -1555 | let queue = UnifiedBuffer::new(&queue_data, /* usize */).unwrap(); - | +++++++++++++ - -error[E0599]: no method named `clone` found for struct `cust::memory::UnifiedBuffer` in the current scope - --> src\main.rs:414:31 - | -414 | let queue_ref = queue.clone(); - | ^^^^^ - | -help: there is a method `clone_into` with a similar name, but with different arguments - --> C:\Users\casey\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\alloc\src\borrow.rs:79:5 - | - 79 | fn clone_into(&self, target: &mut Self::Owned) { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0308]: mismatched types - --> src\main.rs:451:51 - | -451 | if LockFreeCommandQueue::push_command(queue_mut, cmd) { - | ---------------------------------- ^^^^^^^^^ expected `&mut CommandQueueHost`, found `&mut [CommandQueueHost]` - | | - | arguments to this function are incorrect - | - = note: expected mutable reference `&mut cuda_claw::CommandQueueHost` - found mutable reference `&mut [cuda_claw::CommandQueueHost]` -note: associated function defined here - --> src\lock_free_queue.rs:179:12 - | -179 | pub fn push_command(queue: &mut CommandQueueHost, cmd: Command) -> bool { - | ^^^^^^^^^^^^ ---------------------------- - -error[E0599]: no method named `clone` found for struct `cust::memory::UnifiedBuffer` in the current scope - --> src\main.rs:466:31 - | -466 | let queue_ref = queue.clone(); - | ^^^^^ - | -help: there is a method `clone_into` with a similar name, but with different arguments - --> C:\Users\casey\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\alloc\src\borrow.rs:79:5 - | - 79 | fn clone_into(&self, target: &mut Self::Owned) { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0599]: no method named `clone` found for struct `cust::memory::UnifiedBuffer` in the current scope - --> src\main.rs:474:31 - | -474 | let queue_ref = queue.clone(); - | ^^^^^ - | -help: there is a method `clone_into` with a similar name, but with different arguments - --> C:\Users\casey\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\alloc\src\borrow.rs:79:5 - | - 79 | fn clone_into(&self, target: &mut Self::Owned) { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0308]: mismatched types - --> src\main.rs:515:55 - | -515 | if LockFreeCommandQueue::push_command(&mut *queue_guard, cmd) { - | ---------------------------------- ^^^^^^^^^^^^^^^^^ expected `&mut CommandQueueHost`, found `&mut UnifiedBuffer` - | | - | arguments to this function are incorrect - | - = note: expected mutable reference `&mut cuda_claw::CommandQueueHost` - found mutable reference `&mut cust::memory::UnifiedBuffer` -note: associated function defined here - --> src\lock_free_queue.rs:179:12 - | -179 | pub fn push_command(queue: &mut CommandQueueHost, cmd: Command) -> bool { - | ^^^^^^^^^^^^ ---------------------------- - -error[E0599]: no method named `clone` found for struct `cust::memory::UnifiedBuffer` in the current scope - --> src\main.rs:543:40 - | -543 | let queue_ref = (*queue_guard).clone(); - | ^^^^^ - | -help: there is a method `clone_into` with a similar name, but with different arguments - --> C:\Users\casey\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\alloc\src\borrow.rs:79:5 - | - 79 | fn clone_into(&self, target: &mut Self::Owned) { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error[E0061]: this function takes 2 arguments but 1 argument was supplied - --> src\dispatcher.rs:1946:25 - | -1946 | let queue = UnifiedBuffer::new(&queue_data).unwrap(); - | ^^^^^^^^^^^^^^^^^^------------- argument #2 of type `usize` is missing - | -note: associated function defined here - --> C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cust-0.3.2\src\memory\unified.rs:359:12 - | - 359 | pub fn new(value: &T, size: usize) -> CudaResult { - | ^^^ -help: provide the argument - | -1946 | let queue = UnifiedBuffer::new(&queue_data, /* usize */).unwrap(); - | +++++++++++++ - -error[E0599]: no variant or associated item named `CMD_ADD` found for enum `cuda_claw::CommandType` in the current scope - --> src\lock_free_queue.rs:480:36 - | -480 | cmd_type: CommandType::CMD_ADD, - | ^^^^^^^ variant or associated item not found in `cuda_claw::CommandType` - | - ::: src\cuda_claw.rs:86:1 - | - 86 | pub enum CommandType { - | -------------------- variant or associated item `CMD_ADD` not found for this enum - -error[E0599]: no variant or associated item named `CMD_NO_OP` found for enum `cuda_claw::CommandType` in the current scope - --> src\lock_free_queue.rs:502:36 - | -502 | cmd_type: CommandType::CMD_NO_OP, - | ^^^^^^^^^ variant or associated item not found in `cuda_claw::CommandType` - | - ::: src\cuda_claw.rs:86:1 - | - 86 | pub enum CommandType { - | -------------------- variant or associated item `CMD_NO_OP` not found for this enum - -error[E0599]: no variant or associated item named `CMD_NO_OP` found for enum `cuda_claw::CommandType` in the current scope - --> src\lock_free_queue.rs:531:36 - | -531 | cmd_type: CommandType::CMD_NO_OP, - | ^^^^^^^^^ variant or associated item not found in `cuda_claw::CommandType` - | - ::: src\cuda_claw.rs:86:1 - | - 86 | pub enum CommandType { - | -------------------- variant or associated item `CMD_NO_OP` not found for this enum - -error[E0061]: this function takes 2 arguments but 1 argument was supplied - --> src\volatile_dispatcher.rs:570:21 - | -570 | let queue = UnifiedBuffer::new(&queue_data).unwrap(); - | ^^^^^^^^^^^^^^^^^^------------- argument #2 of type `usize` is missing - | -note: associated function defined here - --> C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cust-0.3.2\src\memory\unified.rs:359:12 - | -359 | pub fn new(value: &T, size: usize) -> CudaResult { - | ^^^ -help: provide the argument - | -570 | let queue = UnifiedBuffer::new(&queue_data, /* usize */).unwrap(); - | +++++++++++++ - -error[E0061]: this function takes 2 arguments but 1 argument was supplied - --> src\volatile_dispatcher.rs:578:21 - | -578 | let queue = UnifiedBuffer::new(&queue_data).unwrap(); - | ^^^^^^^^^^^^^^^^^^------------- argument #2 of type `usize` is missing - | -note: associated function defined here - --> C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cust-0.3.2\src\memory\unified.rs:359:12 - | -359 | pub fn new(value: &T, size: usize) -> CudaResult { - | ^^^ -help: provide the argument - | -578 | let queue = UnifiedBuffer::new(&queue_data, /* usize */).unwrap(); - | +++++++++++++ - -error[E0061]: this function takes 2 arguments but 1 argument was supplied - --> src\volatile_dispatcher.rs:589:21 - | -589 | let queue = UnifiedBuffer::new(&queue_data).unwrap(); - | ^^^^^^^^^^^^^^^^^^------------- argument #2 of type `usize` is missing - | -note: associated function defined here - --> C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cust-0.3.2\src\memory\unified.rs:359:12 - | -359 | pub fn new(value: &T, size: usize) -> CudaResult { - | ^^^ -help: provide the argument - | -589 | let queue = UnifiedBuffer::new(&queue_data, /* usize */).unwrap(); - | +++++++++++++ - -error[E0061]: this function takes 2 arguments but 1 argument was supplied - --> src\volatile_dispatcher.rs:599:21 - | -599 | let queue = UnifiedBuffer::new(&queue_data).unwrap(); - | ^^^^^^^^^^^^^^^^^^------------- argument #2 of type `usize` is missing - | -note: associated function defined here - --> C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cust-0.3.2\src\memory\unified.rs:359:12 - | -359 | pub fn new(value: &T, size: usize) -> CudaResult { - | ^^^ -help: provide the argument - | -599 | let queue = UnifiedBuffer::new(&queue_data, /* usize */).unwrap(); - | +++++++++++++ - -error[E0502]: cannot borrow `*self` as immutable because it is also borrowed as mutable - --> src\agent.rs:181:24 - | -181 | self.cells[self.get_index(row, col)] = cell; - | -----------^^^^--------------------- - | | | - | | immutable borrow occurs here - | mutable borrow occurs here - | mutable borrow later used here - | -help: try adding a local storing this... - --> src\agent.rs:181:24 - | -181 | self.cells[self.get_index(row, col)] = cell; - | ^^^^^^^^^^^^^^^^^^^^^^^^ -help: ...and then using that local here - --> src\agent.rs:181:13 - | -181 | self.cells[self.get_index(row, col)] = cell; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -warning: unused variable: `agent_id` - --> src\agent.rs:529:9 - | -529 | agent_id: &str, - | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_agent_id` - | - = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default - -error[E0507]: cannot move out of dereference of `std::sync::MutexGuard<'_, cust::memory::UnifiedBuffer>` - --> src\agent.rs:565:26 - | -565 | let _queue_ref = (*queue); // Access the unified memory - | ^^^^^^^^ move occurs because value has type `cust::memory::UnifiedBuffer`, which does not implement the `Copy` trait - | -help: consider borrowing here - | -565 | let _queue_ref = &(*queue); // Access the unified memory - | + - -warning: unused variable: `cmd` - --> src\agent.rs:559:31 - | -559 | fn submit_to_queue(&self, cmd: Command) -> Result<(), String> { - | ^^^ help: if this is intentional, prefix it with an underscore: `_cmd` - -error[E0793]: reference to packed field is unaligned - --> src\alignment.rs:71:19 - | -71 | unsafe { (&(*(&cmd as *const Command)).timestamp as *const _ as usize) - cmd_ptr == 8 } - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - | - = note: packed structs are only aligned by one byte, and many modern architectures penalize unaligned field accesses - = note: creating a misaligned reference is undefined behavior (even if that reference is never dereferenced) - = help: copy the field contents to a local variable, or replace the reference with a raw pointer and use `read_unaligned`/`write_unaligned` (loads and stores via `*p` must be properly aligned even when using raw pointers) - -warning: unused variable: `data` - --> src\bridge.rs:310:37 - | -310 | pub fn copy_from_cpu(&mut self, data: &T) -> CudaResult<()> - | ^^^^ help: if this is intentional, prefix it with an underscore: `_data` - -error[E0382]: borrow of moved value: `ptx_path` - --> src\cuda_claw\ptx.rs:23:18 - | -16 | let ptx_path = out_dir.join(format!("{}.ptx", name)); - | -------- move occurs because `ptx_path` has type `std::path::PathBuf`, which does not implement the `Copy` trait -... -22 | fs::read_to_string(ptx_path) - | -------- value moved here -23 | .map_err(|e| format!("Failed to read PTX file {:?}: {}", ptx_path, e).into()) - | ^^^ value borrowed here after move -------- borrow occurs due to use in closure - | -help: consider borrowing `ptx_path` - | -22 | fs::read_to_string(&ptx_path) - | + - -warning: unused variable: `cmd` - --> src\dispatcher.rs:286:17 - | -286 | for (i, cmd) in commands.iter().enumerate() { - | ^^^ help: if this is intentional, prefix it with an underscore: `_cmd` - -warning: unused variable: `priority` - --> src\dispatcher.rs:365:9 - | -365 | priority: DispatchPriority, - | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_priority` - -warning: variable does not need to be mutable - --> src\volatile_dispatcher.rs:220:35 - | -220 | pub fn submit_sync(&mut self, mut cmd: Command) -> Result<(u32, Duration), Box> { - | ----^^^ - | | - | help: remove this `mut` - | - = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default - -Some errors have detailed explanations: E0061, E0277, E0308, E0382, E0502, E0507, E0599, E0606, E0609... -For more information about an error, try `rustc --explain E0061`. -warning: `cudaclaw` (bin "cudaclaw") generated 31 warnings -warning: cudaclaw@0.1.0: Compiling CUDA kernel: "kernels\\executor.cu" -warning: cudaclaw@0.1.0: Successfully compiled "kernels\\executor.cu" -warning: cudaclaw@0.1.0: Compiling CUDA kernel: "kernels\\main.cu" -warning: cudaclaw@0.1.0: Successfully compiled "kernels\\main.cu" -warning: cudaclaw@0.1.0: Compiling CUDA kernel: "kernels\\smart_crdt_demo.cu" -warning: cudaclaw@0.1.0: Successfully compiled "kernels\\smart_crdt_demo.cu" -error: could not compile `cudaclaw` (bin "cudaclaw") due to 97 previous errors; 31 warnings emitted -warning: value assigned to `stats` is never read - --> src\dispatcher.rs:1815:13 - | -1815 | stats.commands_dispatched = 999; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - | - = help: maybe it is overwritten before being read? - = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default - -warning: variable does not need to be mutable - --> src\lock_free_queue.rs:470:13 - | -470 | let mut queue: CommandQueueHost = unsafe { zeroed() }; - | ----^^^^^ - | | - | help: remove this `mut` - | - = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default - -warning: variable does not need to be mutable - --> src\volatile_dispatcher.rs:220:35 - | -220 | pub fn submit_sync(&mut self, mut cmd: Command) -> Result<(u32, Duration), Box> { - | ----^^^ - | | - | help: remove this `mut` - -warning: `cudaclaw` (bin "cudaclaw" test) generated 31 warnings (28 duplicates) -warning: cudaclaw@0.1.0: Compiling CUDA kernel: "kernels\\executor.cu" -warning: cudaclaw@0.1.0: Successfully compiled "kernels\\executor.cu" -warning: cudaclaw@0.1.0: Compiling CUDA kernel: "kernels\\main.cu" -warning: cudaclaw@0.1.0: Successfully compiled "kernels\\main.cu" -warning: cudaclaw@0.1.0: Compiling CUDA kernel: "kernels\\smart_crdt_demo.cu" -warning: cudaclaw@0.1.0: Successfully compiled "kernels\\smart_crdt_demo.cu" -error: could not compile `cudaclaw` (bin "cudaclaw" test) due to 119 previous errors; 31 warnings emitted diff --git a/crates/CHANGELOG.md b/crates/CHANGELOG.md index 828d990..26714fa 100644 --- a/crates/CHANGELOG.md +++ b/crates/CHANGELOG.md @@ -5,128 +5,34 @@ All notable changes to constraint-theory-core will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased] +## [0.1.0] - 2026-03-27 -### Added -- **ZERO clippy warnings** - Achieved 100% clippy compliance (Rounds 9 & 10) -- Comprehensive documentation for all public APIs (cohomology, curvature, gauge, manifold) -- Three new real-world examples: - - `ml_integration.rs` - Machine learning integration examples - - `visualization.rs` - Geometric visualization and rendering - - `robotics.rs` - Motion planning and robotics applications -- Enhanced doc tests with examples for all major functions -- Module-level documentation explaining purpose and usage - -### Changed -- Renamed `RicciFlow::default()` to `with_defaults()` to avoid confusion with std::default::Default -- Fixed assignment operation patterns (a = a - b → a -= b) -- Prefixed recursion-only parameters with underscore (_depth) -- Removed unused `target-cpu` from Cargo.toml release profile -- Renamed `edge_case_tests` module to `tests` to avoid naming conflict -- Replaced needless_range_loop with idiomatic enumerate().take() in SIMD code -- Replaced `vec![]` with array literals `[]` in examples (Round 10) - -### Fixed -- **Eliminated all 37 clippy warnings** (100% reduction in Round 9) -- **Eliminated all remaining clippy warnings** (Round 10 - 100% compliance maintained) -- Fixed needless_range_loop in simd.rs (line 79) -- Removed unused imports in edge_case_tests.rs -- Fixed unused variables in test functions -- Fixed manual range contains with idiomatic (..=).contains() -- Fixed Clone on Copy type in tests -- Fixed BenchmarkResult struct to remove dead fields -- Fixed useless_vec warnings in visualization.rs and robotics.rs examples (Round 10) - -### Performance -- Discovered scalar implementation is 58x faster than SIMD for typical use cases -- Confirmed KD-tree optimization provides O(log N) lookup efficiency -- Benchmark suite shows 83.67ns/tile for scalar vs 4875ns/tile for SIMD - -### Documentation -- Added comprehensive API documentation with examples for: - - `CohomologyResult` struct and all fields - - `FastCohomology` compute method - - `RicciFlow` new, with_defaults, and evolve methods - - `ricci_flow_step` function - - `GaugeConnection` and parallel_transport method - - `PythagoreanTriple` struct and all methods - - `PythagoreanManifold` new and state_count methods -- All documentation includes: - - Detailed parameter descriptions - - Return value specifications - - Usage examples - - Error conditions - -## [0.1.0] - 2026-03-15 - -### Added -- Initial release of constraint-theory-core -- PythagoreanManifold with O(log N) KD-tree spatial indexing -- SIMD-optimized batch snapping operations -- Ricci flow curvature computation -- Rigidity percolation using Laman's theorem -- 68 comprehensive tests (100% pass rate) -- AVX2 SIMD support for x86_64 -- Performance benchmark suite +Initial research release. ### Features -- **Pythagorean Snapping:** Map continuous vectors to discrete Pythagorean triples -- **KD-Tree Indexing:** O(log N) nearest neighbor lookup -- **Batch Processing:** SIMD-accelerated batch operations -- **Curvature Flow:** Ricci flow for geometric evolution -- **Rigidity Analysis:** Laman's theorem for structural rigidity -- **Zero Dependencies:** No external runtime dependencies +- **Pythagorean Manifold**: Discrete lattice of exact rational coordinates on the unit circle +- **KD-tree Indexing**: O(log n) nearest-neighbor lookup via balanced KD-tree +- **SIMD Batch Processing**: AVX2-accelerated batch snapping (8-way parallelism) +- **Ricci Flow**: Curvature evolution for geometric analysis +- **Rigidity Percolation**: Laman's theorem for structural rigidity analysis +- **Sheaf Cohomology**: Topological invariant computation +- **Holonomy Transport**: Gauge connection parallel transport +- **Zero Dependencies**: Pure Rust, no runtime dependencies ### Performance -- Single vector snap: ~83ns -- KD-tree lookup: O(log N) -- SIMD batch: 8-way parallelism (AVX2) -- Memory: ~1.25MB for 40K states (density=200) - -### Documentation -- Comprehensive API documentation -- Performance analysis guide -- Optimization roadmap -- Profiling guide - ---- - -## Version History Summary - -| Version | Date | Changes | -|---------|------|---------| -| 0.1.0 | 2026-03-15 | Initial release | -| Unreleased | 2026-03-18 | Round 8 improvements (23→0 warnings, 48% reduction) | -| Unreleased | 2026-03-18 | Round 9 improvements (37→0 warnings, 100% elimination) | -| Unreleased | 2026-03-18 | Round 10 final polish (0 warnings, production ready) | - ---- - -## Release Status: v1.0.0 Ready - -### Round 10 (FINAL) - Production Release Preparation ✅ -- **ZERO clippy warnings** maintained (100% compliance) -- **All examples verified** working correctly -- **All unsafe blocks documented** with safety explanations -- **No TODOs or FIXMEs** remaining in codebase -- **100% test pass rate** maintained (68 tests + 14 doc tests) -- **Professional code quality** achieved -- **Production-ready** for v1.0.0 release - -### Quality Metrics (Final) -- **Clippy warnings:** 0 (100% compliance) -- **Test coverage:** 100% (68 unit tests + 14 doc tests) -- **Documentation:** 100% of public APIs documented -- **Examples:** 3 real-world examples verified working -- **Unsafe blocks:** All documented with safety explanations -- **Code quality:** Professional, production-ready - -### Future Releases -- AVX-512 support (16-way parallelism) -- GPU acceleration (CUDA/OpenCL) -- Approximate nearest neighbor algorithms -- Multi-threaded batch processing - ---- - -**Note:** This project is in active development. API changes may occur before 1.0 release. +- Single snap: ~100 ns (KD-tree lookup) +- Batch snap: ~74 ns/op (SIMD) +- Manifold build: ~50 μs (200 density, ~1000 states) +- Package size: 22 KB compressed + +### Quality +- 82 tests (68 unit + 14 doc tests), all passing +- Zero clippy warnings +- All public APIs documented with examples +- `#![deny(missing_docs)]` enforced + +### Known Limitations +- 2D only (Pythagorean triples on unit circle) +- ~1000 states at default density +- No empirical ML validation yet +- Research-grade, not production-battle-tested diff --git a/crates/OPTIMIZATION_ROADMAP.md b/crates/OPTIMIZATION_ROADMAP.md deleted file mode 100644 index 9e74c76..0000000 --- a/crates/OPTIMIZATION_ROADMAP.md +++ /dev/null @@ -1,703 +0,0 @@ -# Constraint Theory Performance Analysis & Optimization Roadmap - -**Date:** 2026-03-16 -**Current Performance:** 5.10 μs/tile (SIMD), 29.4 μs/tile (scalar) -**Target Performance:** 0.10 μs/tile -**Current Gap:** 51x slower than target - ---- - -## Executive Summary - -The current SIMD implementation achieves **5.8x speedup** over scalar code but remains **51x slower** than the target of 0.10 μs/tile. This analysis identifies the bottlenecks and provides a data-driven roadmap to reach target performance through a combination of algorithmic improvements, memory optimizations, and hardware acceleration. - -### Current Performance Baseline - -| Implementation | Time (μs) | Speedup vs Scalar | Gap to Target | -|----------------|-----------|-------------------|---------------| -| Python NumPy | 10.93 | 0.5x | 109x | -| Rust Scalar | 29.40 | 1.0x | 294x | -| Rust SIMD | 5.10 | 5.8x | 51x | -| **Target** | **0.10** | **294x** | **1x** | - -### Key Findings - -1. **Current SIMD efficiency is only 36% of theoretical AVX2 maximum** - - Theoretical: 8x speedup (8 floats per AVX2 register) - - Actual: 5.8x speedup - - **Opportunity:** 2.2x additional speedup from better SIMD utilization - -2. **Linear search through 40,384 states is the primary bottleneck** - - Current: O(N) where N = 40,384 states - - Each vector computes dot product with ALL states - - **Opportunity:** 5-10x speedup from spatial indexing (KD-tree) - -3. **Memory bandwidth and cache misses are limiting factors** - - States array: 40,384 × 8 bytes = 323 KB (fits in L2 cache) - - But accessed randomly, causing cache thrashing - - **Opportunity:** 2-3x speedup from cache optimization - -4. **CPU utilization is suboptimal** - - Only 8 vectors processed at once (AVX2) - - AVX-512 would process 16 vectors (2x speedup) - - Multi-threading could utilize all cores (4-8x speedup) - ---- - -## Performance Model & Roofline Analysis - -### Arithmetic Intensity - -**Current Implementation:** -``` -Operations per vector: -- Normalization: 5 FLOPs (sqrt, 2 mul, 2 div) -- Dot products: 2 FLOPs × 40,384 states = 80,768 FLOPs -- Comparisons: 2 FLOPs × 40,384 states = 80,768 FLOPs -Total: ~161,541 FLOPs per vector - -Memory accessed per vector: -- Read vectors: 8 bytes -- Read states: 323 KB (40,384 × 8 bytes) -- Write results: 12 bytes -Total: ~323 KB per vector - -Arithmetic Intensity = FLOPs / Bytes -= 161,541 / 323,000 -= 0.5 FLOPs/byte -``` - -**Interpretation:** -- **Memory-bound** kernel (arithmetic intensity < 1 FLOPs/byte) -- CPU can't compute fast enough to saturate memory bandwidth -- **Optimization priority:** Reduce memory access, improve cache utilization - -### Roofline Model (Intel i7-12700K assumed) - -``` -Peak Performance: 16 FP32 operations/cycle × 4.8 GHz = 76.8 GFLOPS -Memory Bandwidth: ~68 GB/s (DDR4-3200) - -Ridge Point (where compute-bound becomes memory-bound): -= Peak Performance / Memory Bandwidth -= 76.8 GFLOPS / 68 GB/s -= 1.13 FLOPs/byte - -Current: 0.5 FLOPs/byte (BELOW ridge point) -=> Memory-bound, not compute-bound - -Performance limit at 0.5 FLOPs/byte: -= Memory Bandwidth × Arithmetic Intensity -= 68 GB/s × 0.5 FLOPs/byte -= 34 GFLOPS theoretical max - -Actual performance: -= 100,000 vectors / 0.51 seconds -= 196,134 vectors/sec -= 161,541 FLOPs/vector × 196,134 vectors/sec -= 31.7 GFLOPS - -Efficiency = 31.7 / 34 = 93% of memory bandwidth limit -``` - -**Conclusion:** Current implementation is **93% efficient** for the algorithm being used. Further improvements require **algorithmic changes**, not just micro-optimizations. - ---- - -## Bottleneck Analysis - -### 1. Linear Search Bottleneck (Primary) - -**Problem:** Every vector performs dot product with ALL 40,384 states - -``` -Current: 40,384 dot products per vector -Time: 161,541 FLOPs × 100,000 vectors = 16.2 GFLOPs -Memory: 323 KB × 100,000 = 32.3 GB read - -With KD-tree (logarithmic search): -Expected: ~log2(40,384) ≈ 15 dot products per vector -Time: 15 × 2 FLOPs × 100,000 = 3 MFLOPs (5400x reduction!) -Memory: 15 × 8 bytes × 100,000 = 12 MB read (2700x reduction!) - -Estimated speedup: 5-10x (conservative, accounts for tree overhead) -``` - -**Evidence from code:** -```rust -// Current: Linear search through all states -for state_idx in 0..state_count { - let state = valid_states[state_idx]; - // Compute dot product with EVERY state - let resonance = state[0] * v_in[0] + state[1] * v_in[1]; - // Compare and track best -} -``` - -### 2. SIMD Underutilization (Secondary) - -**Problem:** Only 5.8x speedup vs 8x theoretical - -**Causes:** -1. **Scalar normalization before SIMD** - ```rust - // Lines 55-60: Scalar normalization - for i in 0..8 { - let vec = vectors[base + i]; - let norm = (vec[0] * vec[0] + vec[1] * vec[1]).sqrt().max(1e-10); - vx_arr[i] = vec[0] / norm; // Scalar division! - vy_arr[i] = vec[1] / norm; // Scalar division! - } - ``` - -2. **Horizontal max reduction** - ```rust - // Lines 91-95: Horizontal operations (expensive in SIMD) - _mm256_storeu_ps(max_res_arr.as_mut_ptr(), max_res); - // Then scalar search through results - for i in 0..8 { - let state_idx = best_idx_arr[i] as usize; - // More scalar work... - } - ``` - -**Impact:** 2.2x lost performance (8x theoretical - 5.8x actual) - -### 3. Cache Misses (Tertiary) - -**Problem:** Random access to 323 KB state array - -**Cache analysis (assuming 32 KB L1, 512 KB L2):** -``` -States array: 323 KB (fits in L2, not L1) -Access pattern: Random (same 40,384 states for each vector) - -L1 miss rate: ~100% (states don't fit in L1) -L2 hit rate: Unknown (need profiling) - -Expected: High L2 hit rate after first few vectors -But: Each vector random access causes cache thrash - -Solution: Spatial clustering or reordering states -``` - -### 4. Branch Prediction Issues (Minor) - -**Problem:** Conditional in hot loop - -```rust -// Line 82: Branch in innermost loop -let cmp = _mm256_cmp_ps(resonance, max_res, _CMP_GT_OS); -// This is OK: SIMD comparison (no branch) - -// But line 100: Scalar branch -if state_idx < valid_states.len() { - // Branch misprediction possible -} -``` - -**Impact:** Minimal (SIMD avoids most branching) - ---- - -## Optimization Roadmap - -### Phase 1: Algorithmic Optimization (KD-tree Integration) - -**Estimated Impact:** 5-10x speedup -**Effort:** 3-5 days -**Priority:** HIGHEST - -**Implementation Plan:** - -1. **Integrate existing KD-tree module** - ```rust - // Current code already has KD-tree! - // File: src/kdtree.rs (407 lines, complete implementation) - // Need to: Fix compilation error, integrate into manifold - - pub struct PythagoreanManifold { - valid_states: Vec<[f32; 2]>, - kdtree: Option, // ADD THIS - } - - impl PythagoreanManifold { - pub fn new(density: usize) -> Self { - let states = /* ... generate states ... */; - let kdtree = Some(KDTree::build(&states)); // BUILD TREE - Self { valid_states: states, kdtree } - } - - pub fn snap(&self, vector: [f32; 2]) -> ([f32; 2], f32) { - // Use KD-tree for nearest neighbor - if let Some(tree) = &self.kdtree { - let (nearest, _idx, _dist) = tree.nearest(&vector).unwrap(); - // Compute noise from distance - } - } - } - ``` - -2. **Benchmark KD-tree performance** - ```bash - cargo run --release --example bench_kdtree - # Compare: Linear search vs KD-tree - # Expected: 5-10x speedup for 40K states - ``` - -3. **Optimize KD-tree for SIMD** - - Batch nearest neighbor queries - - SIMD-accelerated distance computation in leaf nodes - - Pre-compute dot products for common angles - -**Expected Performance After Phase 1:** -- Per-tile: 0.5-1.0 μs (down from 5.1 μs) -- **5-10x speedup** -- Progress: 10-20% toward target - ---- - -### Phase 2: SIMD Optimization - -**Estimated Impact:** 2x speedup -**Effort:** 2-3 days -**Priority:** HIGH (after KD-tree) - -**Implementation Plan:** - -1. **SIMD normalization** - ```rust - // Current: Scalar normalization (lines 55-60) - // Optimized: SIMD normalization - - #[cfg(target_arch = "x86_64")] - #[target_feature(enable = "avx2")] - unsafe fn normalize_batch_avx2(vectors: &[[f32; 2]], vx: &mut [f32], vy: &mut [f32]) { - for i in (0..vectors.len()).step_by(8) { - // Load 8 vectors - let vxy = _mm256_loadu_ps(&vectors[i] as *const [f32; 2] as *const f32); - - // Compute norms with SIMD - let xx = _mm256_mul_ps(vxy, vxy); - let yy = _mm256_shuffle_ps(xx, xx, 0xB1); // Shuffle y*y - let norm_sq = _mm256_add_ps(xx, yy); - let norm = _mm256_rsqrt_ps(norm_sq); // Fast inverse sqrt! - - // Normalize - let vx_norm = _mm256_mul_ps(vxy, norm); - let vy_norm = _mm256_shuffle_ps(vxy, vxy, 0xB1); - let vy_norm = _mm256_mul_ps(vy_norm, norm); - - _mm256_storeu_ps(&mut vx[i], vx_norm); - _mm256_storeu_ps(&mut vy[i], vy_norm); - } - } - ``` - -2. **Avoid horizontal operations** - ```rust - // Current: Horizontal max (lines 91-95) - // Optimized: Keep results in SIMD registers - - // Instead of: Extract to array, search scalar - // Use: Keep max in register, compare directly - - // Or better: Process states in batches, track best per vector - ``` - -3. **AVX-512 support** - ```toml - # Cargo.toml - [dependencies] - std = { version = "0.2", features = ["avx512_target_feature"] } - ``` - - ```rust - #[cfg(target_arch = "x86_64")] - #[target_feature(enable = "avx512f")] - unsafe fn snap_batch_avx512(/* ... */) { - // Process 16 vectors at once (2x AVX2) - // Use _mm512_ functions - } - ``` - -**Expected Performance After Phase 2:** -- Per-tile: 0.25-0.5 μs (down from 0.5-1.0 μs) -- **Additional 2x speedup** -- Total: 10-20x from baseline -- Progress: 25-50% toward target - ---- - -### Phase 3: Memory & Cache Optimization - -**Estimated Impact:** 2-3x speedup -**Effort:** 2-3 days -**Priority:** MEDIUM - -**Implementation Plan:** - -1. **Cache-aligned data structures** - ```rust - use std::mem::align_of; - - #[repr(align(64))] // Cache line alignment - pub struct AlignedStates { - states: Vec<[f32; 2]>, - } - - // Ensure each cache line has coherent states - // Reduce false sharing between threads - ``` - -2. **Spatial clustering of states** - ```rust - // Reorder states to improve cache locality - // Group states by angular position - // Neighboring states likely to be accessed together - - pub fn cluster_states_angular(states: &mut [[f32; 2]]) { - // Sort by angle - states.sort_by(|a, b| { - let angle_a = a[1].atan2(a[0]); - let angle_b = b[1].atan2(b[0]); - angle_a.partial_cmp(&angle_b).unwrap() - }); - } - ``` - -3. **Prefetching** - ```rust - #[cfg(target_arch = "x86_64")] - #[target_feature(enable = "avx2")] - unsafe fn snap_batch_with_prefetch(/* ... */) { - // Prefetch next cache line while processing current - for chunk_idx in 0..chunks { - let next_base = (chunk_idx + 1) * 8; - _mm_prefetch( - &vectors[next_base] as *const _ as *const i8, - _MM_HINT_T0 // Prefetch to L1 - ); - // Process current chunk... - } - } - ``` - -**Expected Performance After Phase 3:** -- Per-tile: 0.1-0.2 μs (down from 0.25-0.5 μs) -- **Additional 2-3x speedup** -- Total: 25-50x from baseline -- Progress: 50-100% toward target - ---- - -### Phase 4: Multi-threading - -**Estimated Impact:** 4-8x speedup (CPU cores) -**Effort:** 3-5 days -**Priority:** MEDIUM (after single-core optimized) - -**Implementation Plan:** - -1. **Rayon parallelization** - ```toml - [dependencies] - rayon = "1.8" - ``` - - ```rust - use rayon::prelude::*; - - impl PythagoreanManifold { - pub fn snap_batch_parallel(&self, vectors: &[[f32; 2]]) -> Vec<([f32; 2], f32)> { - vectors.par_iter() // Parallel iterator - .map(|&vec| self.snap(vec)) - .collect() - } - } - ``` - -2. **Work-stealing scheduler** - - Rayon automatically handles work distribution - - Load balancing across threads - - Minimal overhead - -3. **NUMA awareness** (for multi-socket systems) - ```rust - // Pin threads to NUMA nodes - // Allocate memory locally to each node - // Use: numa-rs crate - ``` - -**Expected Performance After Phase 4:** -- Per-tile: 0.015-0.05 μs on 8-core system -- **4-8x speedup** over single-threaded -- Total: 100-400x from baseline -- **EXCEEDS TARGET** on multi-core systems - ---- - -### Phase 5: GPU Acceleration (Optional) - -**Estimated Impact:** 100-1000x speedup -**Effort:** 2-4 weeks -**Priority:** LOW (if CPU target met) - -**Implementation Plan:** - -1. **CUDA kernel for snapping** - ```cuda - __global__ void snap_batch_kernel( - const float2* states, - int num_states, - const float2* vectors, - float2* results, - float* noise, - int num_vectors - ) { - int idx = blockIdx.x * blockDim.x + threadIdx.x; - if (idx >= num_vectors) return; - - float2 vec = vectors[idx]; - float norm = sqrtf(vec.x * vec.x + vec.y * vec.y); - float2 v_in = make_float2(vec.x / norm, vec.y / norm); - - float max_resonance = -1.0f; - float2 best_state = make_float2(1.0f, 0.0f); - - for (int i = 0; i < num_states; i++) { - float2 state = states[i]; - float resonance = state.x * v_in.x + state.y * v_in.y; - if (resonance > max_resonance) { - max_resonance = resonance; - best_state = state; - } - } - - results[idx] = best_state; - noise[idx] = 1.0f - max_resonance; - } - ``` - -2. **Rust-CUDA integration** - ```toml - [dependencies] - cudarc = "0.10" - ``` - - ```rust - use cudarc::driver::CudaDevice; - - let device = CudaDevice::new(0).unwrap(); - let states_gpu = device.htod_sync_copy(&states).unwrap(); - let vectors_gpu = device.htod_sync_copy(&vectors).unwrap(); - - // Launch kernel - snap_batch_kernel( - &device, - &states_gpu, - &vectors_gpu, - &mut results_gpu, - &mut noise_gpu, - num_vectors - ); - ``` - -3. **Shared memory optimization** - ```cuda - __shared__ float2 s_states[256]; // Cache states in shared memory - // Load states in cooperative groups - // Reduce global memory accesses - ``` - -**Expected Performance After Phase 5:** -- Per-tile: 0.005-0.05 μs on GPU -- **100-1000x speedup** over CPU baseline -- **Massively exceeds target** - ---- - -## Profiling Strategy - -### Tools to Use - -1. **Flamegraph** - ```bash - cargo install flamegraph - cargo flamegraph --example bench - # flamegraph.svg shows hotspot functions - ``` - -2. **perf (Linux) or VTune (Intel)** - ```bash - # Linux - perf record -g cargo run --release --example bench - perf report - - # Metrics to collect: - # - Cache misses (LLC-load-misses) - # - Branch mispredictions (branch-misses) - # - CPU cycles (cycles) - # - Instructions (instructions) - ``` - -3. **Custom instrumentation** - ```rust - use std::time::Instant; - - pub fn snap_batch_instrumented(&self, vectors: &[[f32; 2]]) -> Vec<([f32; 2], f32)> { - let t0 = Instant::now(); - - // Phase 1: Normalization - let t1 = Instant::now(); - - // Phase 2: KD-tree search - let t2 = Instant::now(); - - // Phase 3: Result assembly - let t3 = Instant::now(); - - println!("Normalization: {:?}", t1 - t0); - println!("KD-tree search: {:?}", t2 - t1); - println!("Assembly: {:?}", t3 - t2); - - results - } - ``` - -### Metrics to Track - -| Metric | Current | Target | Tool | -|--------|---------|--------|------| -| Per-tile latency | 5.1 μs | 0.1 μs | benchmark | -| CPU utilization | 12.5% (1/8 cores) | 100% (all cores) | perf | -| L1 cache hit rate | ~0% | >80% | perf | -| L2 cache hit rate | Unknown | >95% | perf | -| Branch prediction | Unknown | >95% | perf | -| SIMD efficiency | 36% (5.8/16) | >90% | VTune | - ---- - -## Risk Assessment - -| Risk | Impact | Probability | Mitigation | -|------|--------|-------------|------------| -| KD-tree overhead exceeds benefits | High | Medium | Profile first, fallback to linear for small N | -| Multi-threading diminishing returns | Medium | Low | Use work-stealing, tune chunk size | -| GPU overhead for small batches | Low | High | Batching, hybrid CPU/GPU | -| AVX-512 unavailability | Low | Medium | Fallback to AVX2 | -| Memory exhaustion with large manifolds | Medium | Low | Streaming, incremental processing | - ---- - -## Timeline & Milestones - -### Week 1: Algorithmic Foundation -- [ ] Fix KD-tree compilation errors -- [ ] Integrate KD-tree into manifold -- [ ] Benchmark KD-tree vs linear search -- [ ] **Milestone: 5-10x speedup achieved** - -### Week 2: SIMD Optimization -- [ ] Implement SIMD normalization -- [ ] Eliminate horizontal operations -- [ ] Add AVX-512 support -- [ ] **Milestone: Additional 2x speedup** - -### Week 3: Memory Optimization -- [ ] Add cache alignment -- [ ] Implement state clustering -- [ ] Add prefetching -- [ ] **Milestone: Additional 2-3x speedup** - -### Week 4: Parallelization -- [ ] Add Rayon multi-threading -- [ ] Tune thread pool configuration -- [ **Milestone: 4-8x speedup on multi-core** - -### Week 5+: GPU (Optional) -- [ ] Implement CUDA kernel -- [ ] Rust-CUDA integration -- [ ] Shared memory optimization -- [ ] **Milestone: 100-1000x speedup on GPU** - ---- - -## Expected Performance Trajectory - -``` -Current: 5.10 μs/tile (100% baseline) -After Phase 1: 0.5-1.0 μs (5-10x) ← KD-tree -After Phase 2: 0.25-0.5 μs (2x) ← SIMD optimization -After Phase 3: 0.1-0.2 μs (2-3x) ← Memory optimization -After Phase 4: 0.015-0.05 μs (4-8x) ← Multi-threading -After Phase 5: 0.005-0.05 μs (10x) ← GPU -──────────────────────────────────────────── -TARGET: 0.10 μs/tile -``` - -**Conservative estimate (Phases 1-3 only):** -- 0.1-0.2 μs/tile -- **25-50x speedup** -- **50-100% of target** - -**Aggressive estimate (all phases):** -- 0.015-0.05 μs/tile (CPU) -- 0.005-0.05 μs/tile (GPU) -- **100-1000x speedup** -- **2-20x BETTER than target** - ---- - -## Next Immediate Actions - -1. **Fix KD-tree compilation error** (1 hour) - ```bash - # Line 246 in src/kdtree.rs - - if let Some(&worst_dist) = results.worst_distance() { - + if let Some(worst_dist) = results.worst_distance() { - ``` - -2. **Generate flamegraph** (30 minutes) - ```bash - cargo install flamegraph - cd C:/Users/casey/polln/constrainttheory/crates/constraint-theory-core - cargo flamegraph --example bench - # Open flamegraph.svg in browser - ``` - -3. **Profile cache performance** (30 minutes) - ```bash - # On Linux with perf - perf stat -e cache-references,cache-misses,L1-dcache-load-misses,L1-dcache-loads cargo run --release --example bench - - # On Windows with VTune - vtune -collect hotspots -result-dir vtune_results -- cargo run --release --example bench - ``` - -4. **Implement KD-tree integration** (1 day) - - Modify `PythagoreanManifold` to include KD-tree - - Add benchmark comparing linear vs KD-tree - - Tune leaf size for optimal performance - -5. **Measure and iterate** (ongoing) - - After each change, run benchmarks - - Update this roadmap with actual measurements - - Adjust priorities based on data - ---- - -## Conclusion - -The current SIMD implementation is **93% efficient** for the linear search algorithm, which means we've hit a **algorithmic ceiling**, not a hardware ceiling. To reach the 0.10 μs target, we must: - -1. **Replace linear search with KD-tree** (5-10x speedup) -2. **Optimize SIMD utilization** (2x speedup) -3. **Improve cache locality** (2-3x speedup) -4. **Add multi-threading** (4-8x speedup) - -With Phases 1-3, we expect to **reach or exceed the target** on a single core. With Phase 4, we'll **dramatically exceed** it on multi-core systems. Phase 5 (GPU) is optional but would provide massive headroom for future scaling. - -**Key insight:** The problem is **memory-bound**, not compute-bound. Focus on reducing memory access (KD-tree) and improving cache efficiency before optimizing compute. - -**Estimated time to target:** 2-3 weeks for Phases 1-3 (single-core target reached) diff --git a/crates/PERFORMANCE_ANALYSIS_SUMMARY.md b/crates/PERFORMANCE_ANALYSIS_SUMMARY.md deleted file mode 100644 index 1e6e437..0000000 --- a/crates/PERFORMANCE_ANALYSIS_SUMMARY.md +++ /dev/null @@ -1,408 +0,0 @@ -# Constraint Theory Performance Analysis - Executive Summary - -**Date:** 2026-03-16 -**Analysis Type:** Deep performance profiling & optimization roadmap -**Status:** Complete - ---- - -## TL;DR - -Current implementation achieves **6.89x SIMD speedup** but remains **51x slower than target** due to **memory-bound linear search**. Primary bottleneck is O(N) search through 40,384 states. KD-tree integration alone should provide **5-10x speedup**, putting us within 5-10x of target. - ---- - -## Performance Baseline - -### Measured Performance - -| Metric | Value | Target | Gap | -|--------|-------|--------|-----| -| **Per-tile latency** | 5.07 μs | 0.10 μs | 51x slower | -| **Throughput** | 197K tiles/sec | 10M tiles/sec | 51x slower | -| **SIMD speedup** | 6.89x | 8x theoretical | 86% efficiency | -| **GFLOPS achieved** | 15.92 | 76.8 (peak) | 21% of peak | -| **Memory bandwidth** | 63.67 GB/s | 68 GB/s | 94% of limit | - -### Key Findings - -1. **SIMD efficiency is GOOD (86%)** - - 6.89x actual vs 8x theoretical - - No major SIMD bottlenecks - - Micro-optimizations would yield minimal gains (<1.2x) - -2. **Memory-bound kernel (Arithmetic Intensity = 0.25)** - - 0.25 FLOPs/byte << 1.0 (ridge point) - - CPU cannot compute fast enough to saturate memory - - Memory bandwidth is the limiting factor - -3. **Linear search is the killer** - - 80,768 dot products per vector (40,384 states × 2 ops) - - 316 KB memory read per vector - - 32.3 GB total memory read for 100K vectors - -4. **Cache behavior needs investigation** - - 316 KB state array (fits in L2, not L1) - - Unknown L1/L2 hit rates (need profiling) - - Likely high cache miss rate - ---- - -## Bottleneck Breakdown - -``` -Total time: 507.44 ms -├─ SIMD snapping: 485.38 ms (99.9%) -│ ├─ Dot products: ~450 ms (90%) -│ ├─ Comparisons: ~30 ms (6%) -│ └─ Other: ~5 ms (1%) -├─ Normalization: 0.20 ms (0.0%) -└─ Validation: 0.07 ms (0.0%) -``` - -### Hotspot Analysis - -**Function: `snap_batch_avx2` (lines 35-134 in simd.rs)** - -- **Lines 70-89:** Inner loop (dot products) - **90% of time** - ```rust - for state_idx in 0..state_count { // 40,384 iterations! - let state = valid_states[state_idx]; - let resonance = state[0] * v_in[0] + state[1] * v_in[1]; // HOT - let cmp = _mm256_cmp_ps(resonance, max_res, _CMP_GT_OS); // HOT - // ... - } - ``` - -- **Lines 55-60:** Normalization (scalar) - <1% of time - - Not worth optimizing (already fast) - -- **Lines 91-105:** Result extraction - <1% of time - - Horizontal operations (acceptable overhead) - ---- - -## Optimization Roadmap - -### Phase 1: KD-tree Integration (HIGH PRIORITY) - -**Impact:** 5-10x speedup -**Effort:** 3-5 days -**Risk:** Low - -**What:** -- Replace O(N) linear search with O(log N) KD-tree search -- Reduce dot products from 80,768 to ~15 per vector -- Reduce memory reads from 316 KB to ~120 bytes per vector - -**How:** -```rust -// Already implemented: src/kdtree.rs (407 lines) -// Just need to integrate into manifold - -pub struct PythagoreanManifold { - valid_states: Vec<[f32; 2]>, - kdtree: Option, // ADD THIS -} - -impl PythagoreanManifold { - pub fn snap(&self, vector: [f32; 2]) -> ([f32; 2], f32) { - if let Some(tree) = &self.kdtree { - let (nearest, _idx, dist_sq) = tree.nearest(&vector)?; - let noise = 1.0 - (1.0 - dist_sq.sqrt()).max(0.0); - return (nearest, noise); - } - // Fallback to linear search - } -} -``` - -**Expected performance:** -- Per-tile: 0.5-1.0 μs (down from 5.07 μs) -- **5-10x speedup** -- Progress: 10-20% toward target - ---- - -### Phase 2: Memory Optimization (MEDIUM PRIORITY) - -**Impact:** 2-3x speedup -**Effort:** 2-3 days -**Risk:** Low - -**What:** -- Improve cache locality -- Reduce cache misses -- Add prefetching - -**How:** -1. **Cache-aligned data structures** - ```rust - #[repr(align(64))] // Cache line alignment - pub struct AlignedStates { - states: Vec<[f32; 2]>, - } - ``` - -2. **Spatial clustering** - ```rust - // Reorder states by angle for better locality - states.sort_by(|a, b| { - a[1].atan2(a[0]).partial_cmp(&b[1].atan2(b[0])).unwrap() - }); - ``` - -3. **Prefetching** - ```rust - #[cfg(target_arch = "x86_64")] - _mm_prefetch(&states[next_idx] as *const _ as *const i8, _MM_HINT_T0); - ``` - -**Expected performance:** -- Per-tile: 0.2-0.4 μs (down from 0.5-1.0 μs) -- **Additional 2-3x speedup** -- Total: 10-30x from baseline -- Progress: 33-100% toward target - ---- - -### Phase 3: Multi-threading (LOW PRIORITY) - -**Impact:** 4-8x speedup (CPU cores) -**Effort:** 3-5 days -**Risk:** Low - -**What:** -- Parallelize across CPU cores using Rayon -- Utilize all available cores - -**How:** -```rust -use rayon::prelude::*; - -impl PythagoreanManifold { - pub fn snap_batch_parallel(&self, vectors: &[[f32; 2]]) -> Vec<([f32; 2], f32)> { - vectors.par_iter() - .map(|&vec| self.snap(vec)) - .collect() - } -} -``` - -**Expected performance:** -- Per-tile: 0.05-0.1 μs on 8-core system -- **4-8x speedup** over single-threaded -- Total: 40-240x from baseline -- **EXCEEDS TARGET** on multi-core systems - ---- - -## Performance Model Validation - -### Roofline Model Analysis - -**Theoretical limits (Intel i7-12700K):** -- Peak performance: 76.8 GFLOPS (16 FLOPs/cycle × 4.8 GHz) -- Memory bandwidth: 68 GB/s (DDR4-3200) -- Ridge point: 1.13 FLOPs/byte - -**Current performance:** -- Arithmetic intensity: 0.25 FLOPs/byte (MEMORY-BOUND) -- Theoretical limit: 68 GB/s × 0.25 FLOPs/byte = 17 GFLOPS -- Actual performance: 15.92 GFLOPS -- **Efficiency: 94% of theoretical maximum** - -**Conclusion:** We're at 94% of the memory bandwidth limit for this algorithm. Further improvements require algorithmic changes (KD-tree), not micro-optimizations. - -### SIMD Efficiency Analysis - -**Current: 6.89x speedup (86% of theoretical)** - -**Breakdown:** -- Theoretical AVX2: 8x (8 floats per register) -- Actual: 6.89x -- Lost to scalar overhead: 1.11x (14%) - -**Scalar overhead sources:** -1. Horizontal max reduction (~5%) -2. Remainder handling (~5%) -3. Loop overhead (~4%) - -**Verdict:** Good SIMD utilization, don't optimize further yet. - ---- - -## Profiling Recommendations - -### Immediate Actions - -1. **Generate flamegraph** - ```bash - cargo install flamegraph - cargo flamegraph --example bench_profiled - ``` - - Confirm `snap_batch_avx2` is hotspot - - Identify any unexpected bottlenecks - -2. **Profile cache performance** (Linux) - ```bash - perf stat -e cache-references,cache-misses,L1-dcache-load-misses,L1-dcache-loads \ - cargo run --release --example bench_profiled - ``` - - Measure L1/L2 hit rates - - Validate memory-bound hypothesis - -3. **Profile branch prediction** (Linux) - ```bash - perf stat -e branches,branch-misses \ - cargo run --release --example bench_profiled - ``` - - Check for branch mispredictions - - Should be <2% for SIMD code - -### Metrics to Track - -| Metric | Current | Target (after KD-tree) | -|--------|---------|------------------------| -| Per-tile latency | 5.07 μs | 0.5-1.0 μs | -| L1 cache hit rate | Unknown | >80% | -| L2 cache hit rate | Unknown | >95% | -| Memory bandwidth | 63.67 GB/s | 5-10 GB/s | -| Arithmetic intensity | 0.25 | 2-5 | - ---- - -## Risk Assessment - -### Technical Risks - -| Risk | Impact | Probability | Mitigation | -|------|--------|-------------|------------| -| KD-tree overhead exceeds benefits | High | 20% | Profile first, fallback to linear for small N | -| Cache optimization minimal impact | Medium | 30% | Profile first, validate hit rates | -| Multi-threading diminishing returns | Low | 10% | Use work-stealing, tune chunk size | - -### Implementation Risks - -| Risk | Impact | Probability | Mitigation | -|------|--------|-------------|------------| -| KD-tree integration bugs | High | 30% | Comprehensive testing, gradual rollout | -| Performance regression | Medium | 20% | Benchmark suite, performance tests | -| Compilation errors | Low | 10% | Already fixed kdtree.rs compilation | - ---- - -## Timeline & Milestones - -### Week 1: Algorithmic Foundation -- [x] Complete performance analysis -- [x] Create optimization roadmap -- [ ] Fix KD-tree compilation (DONE) -- [ ] Integrate KD-tree into manifold -- [ ] Benchmark KD-tree vs linear search -- [ ] **Milestone: 5-10x speedup achieved** - -### Week 2: Memory Optimization -- [ ] Profile cache performance -- [ ] Implement cache alignment -- [ ] Add spatial clustering -- [ ] Add prefetching -- [ ] **Milestone: Additional 2-3x speedup** - -### Week 3: Parallelization (Optional) -- [ ] Add Rayon multi-threading -- [ ] Tune thread pool configuration -- [ ] Benchmark scaling with cores -- [ ] **Milestone: 4-8x speedup on multi-core** - ---- - -## Success Criteria - -### Phase 1 Success (Week 1) -- [ ] KD-tree integrated and tested -- [ ] Benchmark shows 5-10x speedup -- [ ] Per-tile latency < 1.0 μs -- [ ] Zero correctness regressions - -### Phase 2 Success (Week 2) -- [ ] L1 cache hit rate >80% -- [ ] Additional 2-3x speedup achieved -- [ ] Per-tile latency < 0.5 μs -- [ ] On track to meet 0.1 μs target - -### Phase 3 Success (Week 3) -- [ ] Linear scaling with CPU cores -- [ ] Per-tile latency < 0.1 μs on 8-core -- [ ] **TARGET MET** - ---- - -## Next Immediate Actions (Today) - -1. **Run profiling** (30 minutes) - ```bash - cd C:/Users/casey/polln/constrainttheory/crates/constraint-theory-core - cargo flamegraph --example bench_profiled - ``` - -2. **Integrate KD-tree** (2-4 hours) - - Add `kdtree` field to `PythagoreanManifold` - - Implement `snap` using KD-tree - - Add fallback to linear search - -3. **Benchmark KD-tree** (30 minutes) - - Run `bench_profiled` with KD-tree - - Compare to linear search baseline - - Validate speedup - -4. **Create tracking issue** (15 minutes) - - Document current performance - - Set target milestones - - Track optimization progress - ---- - -## Appendix: Files Created - -1. **`OPTIMIZATION_ROADMAP.md`** - Comprehensive optimization guide - - Phase-by-phase optimization plan - - Detailed implementation instructions - - Expected performance improvements - -2. **`PROFILING_GUIDE.md`** - Platform-specific profiling instructions - - Flamegraph, perf, VTune, Instruments - - Custom instrumentation examples - - Bottleneck identification patterns - -3. **`examples/bench_profiled.rs`** - Advanced benchmarking suite - - Detailed timing breakdowns - - Performance metrics (FLOPs, bandwidth, AI) - - Optimization recommendations - ---- - -## Conclusion - -The current SIMD implementation is **highly efficient (94% of memory bandwidth limit)** but fundamentally limited by the **O(N) linear search algorithm**. The primary bottleneck is **not SIMD utilization** but **excessive memory access**. - -**Key insight:** We've hit the **algorithmic ceiling**, not the hardware ceiling. - -**Path to target:** -1. **KD-tree integration** (5-10x) → brings us within 5-10x of target -2. **Memory optimization** (2-3x) → brings us within 2-5x of target -3. **Multi-threading** (4-8x) → exceeds target by 40-240x - -**Estimated time to target:** 2 weeks (Phases 1-2 single-core, Phase 3 multi-core optional) - -**Confidence level:** HIGH (90%) -- KD-tree is well-understood algorithm -- Memory optimization is straightforward -- Multi-threading is well-supported in Rust -- Risk is low with profiling-driven approach - ---- - -**Last Updated:** 2026-03-16 -**Analyst:** Data Scientist & Performance Specialist -**Status:** Analysis complete, ready for implementation diff --git a/crates/PERFORMANCE_REPORT_ROUND_8.md b/crates/PERFORMANCE_REPORT_ROUND_8.md deleted file mode 100644 index d11f67c..0000000 --- a/crates/PERFORMANCE_REPORT_ROUND_8.md +++ /dev/null @@ -1,401 +0,0 @@ -# ConstraintTheory Core - Round 8 Performance Report - -**Date:** 2026-03-18 -**Repository:** SuperInstance/Constraint-Theory -**Component:** constraint-theory-core -**Test Suite:** 68 tests passing (100%) -**Platform:** Windows x86_64 - ---- - -## Executive Summary - -Round 8 polishing focused on: -1. **Code Quality** - Fixed 44 clippy warnings down to 23 -2. **Performance Analysis** - Benchmarked SIMD vs scalar implementations -3. **Documentation** - Enhanced API documentation with detailed examples -4. **Test Suite** - All 68 tests passing in 0.44s - -### Key Findings - -**Performance Discovery:** -- KD-tree optimization (O(log N)) is so effective that SIMD overhead isn't beneficial for single-vector operations -- Scalar implementation: **83.67 ns/tile** (11.9M tiles/sec) -- SIMD implementation: **4875.38 ns/tile** (205K tiles/sec) -- **Recommendation:** Use scalar for single vectors, SIMD only for large batches - -**Code Quality Improvements:** -- Fixed clippy warnings: 44 → 23 (48% reduction) -- Added Default trait implementation for ConstraintBlock -- Improved function signatures (removed ambiguous `default()` method) -- Enhanced safety documentation for SIMD intrinsics - ---- - -## Performance Benchmark Results - -### Test Configuration -- **Manifold density:** 200 (40,384 valid states) -- **Test vectors:** 100,000 -- **Iterations:** 5 -- **Warmup:** 10,000 vectors - -### Scalar Implementation -``` -Average time: 8.37 ms -Per-tile: 83.67 ns (0.084 us) -Throughput: 11,952,058 tiles/sec -Total noise: 0.0071 -``` - -### SIMD Implementation (AVX2) -``` -Average time: 487.54 ms -Per-tile: 4875.38 ns (4.875 us) -Throughput: 205,112 tiles/sec -Total noise: 0.0025 -``` - -### Analysis - -**Why is scalar faster?** - -1. **KD-tree Efficiency:** The KD-tree provides O(log N) lookup, which is already extremely fast for the ~40K states in the manifold. - -2. **SIMD Overhead:** For single-vector operations, the SIMD setup cost (loading vectors, horizontal reductions) outweighs the parallelism benefit. - -3. **Memory Access Pattern:** KD-tree traversal has poor cache locality for SIMD, causing cache misses that negate SIMD benefits. - -4. **Batch Size:** SIMD benefits only appear with large batches where the setup cost is amortized. - -### Recommendations - -1. **Use Scalar for:** - - Single-vector snapping - - Small batches (< 100 vectors) - - Interactive applications - -2. **Use SIMD for:** - - Large batches (> 1000 vectors) - - Batch processing systems - - Offline computation - -3. **Future Optimizations:** - - Implement batch KD-tree queries (multiple vectors in one traversal) - - Add cache-aligned memory layout for better SIMD performance - - Consider GPU acceleration for massive parallelism - ---- - -## Code Quality Improvements - -### Clippy Warning Fixes - -**Before:** 44 warnings -**After:** 23 warnings -**Reduction:** 48% - -#### Fixed Warnings - -1. **Ambiguous method name** (`curvature.rs`) - - Changed `RicciFlow::default()` to `with_defaults()` - - Avoids confusion with `std::default::Default` trait - -2. **Recursion-only parameters** (`kdtree.rs`) - - Prefixed `depth` parameter with underscore: `_depth` - - Clarifies that parameter is only used for recursion - -3. **Assignment operation patterns** (`manifold.rs`) - - Changed `a = a - b` to `a -= b` - - More idiomatic Rust code - -4. **Missing safety documentation** (`simd.rs`) - - Added comprehensive `# Safety` section to `snap_batch_avx2()` - - Documented CPU requirements and memory safety guarantees - -5. **Missing struct/field documentation** (`percolation.rs`, `tile.rs`) - - Added detailed docs for `RigidityResult` and all fields - - Documented `FastPercolation` and its methods - - Added `Default` trait implementation for `ConstraintBlock` - -6. **Unused manifest key** (`Cargo.toml`) - - Removed `target-cpu = "native"` from release profile - - Fixed deprecation warning - -#### Remaining Warnings (23) - -Most remaining warnings are missing documentation for: -- `CohomologyResult` struct and fields -- `FastCohomology` struct and methods -- `GaugeConnection` struct and methods -- `PythagoreanTriple` struct and methods -- `PythagoreanManifold` struct and methods - -These are lower priority and will be addressed in Round 9. - ---- - -## Test Suite Performance - -### Execution Time -- **Total tests:** 68 passing + 3 doc tests = 71 total -- **Execution time:** 0.44s (unit tests) + 0.35s (doc tests) = 0.79s total -- **Average per test:** ~6ms - -### Test Categories -- **Edge case tests:** 43 tests (comprehensive boundary testing) -- **KD-tree tests:** 7 tests (spatial indexing) -- **Manifold tests:** 10 tests (Pythagorean snapping) -- **Curvature tests:** 3 tests (Ricci flow) -- **Cohomology tests:** 2 tests (topological invariants) -- **Percolation tests:** 1 test (rigidity analysis) -- **SIMD tests:** 2 tests (vectorization verification) - -### Coverage Areas - -**Geometric Operations:** -- Pythagorean triple validation -- Vector snapping with noise calculation -- KD-tree nearest neighbor search -- Batch processing (scalar and SIMD) - -**Boundary Conditions:** -- Zero vectors -- Very large vectors -- Negative vectors -- All quadrants -- Axis-aligned vectors - -**Performance Tests:** -- Stress tests (10K+ operations) -- Batch processing verification -- SIMD vs scalar correctness - -**Mathematical Correctness:** -- Pythagorean theorem validation -- GCD computation -- Laman's theorem for rigidity -- Ricci flow convergence - ---- - -## Documentation Enhancements - -### API Documentation - -**Enhanced with:** -- Detailed function signatures with parameter descriptions -- Return value specifications -- Usage examples in comments -- Safety guarantees for unsafe code -- Performance characteristics - -**Examples:** - -```rust -/// Snap a vector to the nearest Pythagorean triple -/// -/// Uses KD-tree for O(log N) nearest neighbor lookup. -/// -/// # Arguments -/// -/// * `vector` - Input 2D vector to snap -/// -/// # Returns -/// -/// Tuple of (snapped_vector, noise) where noise is 1 - resonance -pub fn snap(&self, vector: [f32; 2]) -> ([f32; 2], f32) -``` - -### Safety Documentation - -Added comprehensive safety documentation for SIMD intrinsics: - -```rust -/// # Safety -/// -/// This function is marked unsafe because it uses AVX2 intrinsics which require: -/// - CPU support for AVX2 instructions -/// - Properly aligned memory access (handled internally) -/// - Correct bounds checking (handled internally) -/// -/// The safe wrapper `snap_batch_simd()` checks CPU support before calling this. -pub unsafe fn snap_batch_avx2(...) -``` - ---- - -## Performance Characteristics - -### Time Complexity - -| Operation | Complexity | Notes | -|-----------|-----------|-------| -| Single snap | O(log N) | KD-tree lookup | -| Batch snap (scalar) | O(M log N) | M vectors, N states | -| Batch snap (SIMD) | O(M log N / 8) | Theoretical, with overhead | -| KD-tree build | O(N log N) | One-time cost | -| Nearest-k search | O(k log N) | For k neighbors | - -### Space Complexity - -| Structure | Space | Notes | -|-----------|-------|-------| -| Manifold (density=200) | ~40K states | 2 floats each = 320KB | -| KD-tree | O(N) | Additional tree structure | -| Batch buffer | O(M) | User-provided | - -### Scalability - -**Tested Configurations:** -- Density 10: ~100 states -- Density 50: ~1,200 states -- Density 200: ~40,000 states -- Density 500: ~100,000+ states - -**Performance:** -- Lookup time grows logarithmically with state count -- Memory usage grows linearly with state count -- No degradation observed up to 100K states - ---- - -## Optimization Opportunities - -### Immediate Improvements (Round 9) - -1. **Batch KD-tree Queries** - - Query multiple vectors in single tree traversal - - Expected speedup: 2-3x for large batches - -2. **Cache Alignment** - - Align data structures to 64-byte cache lines - - Expected speedup: 1.5-2x - -3. **SIMD for KD-tree Traversal** - - Vectorize distance calculations during tree search - - Expected speedup: 1.5-2x - -### Future Optimizations (Rounds 10+) - -1. **AVX-512 Support** - - 16-way parallelism (vs 8-way AVX2) - - Expected speedup: 2x (on supported CPUs) - -2. **GPU Acceleration** - - CUDA/OpenCL implementation - - Expected speedup: 100-1000x for massive batches - -3. **Approximate Nearest Neighbor** - - Locality-sensitive hashing (LSH) - - Expected speedup: 10-100x with small accuracy loss - ---- - -## Benchmarking Methodology - -### Test Environment -- **Platform:** Windows x86_64 -- **CPU:** x86_64 with AVX2 support -- **Compiler:** Rust 1.85 (release profile) -- **Optimizations:** `-O3 -C target-cpu=native -C lto=fat` - -### Measurement Technique -1. Warmup runs (3 iterations) to stabilize CPU frequency -2. Timed runs (5 iterations) for statistical significance -3. Average of runs reported (min/max excluded) -4. Verification that SIMD and scalar produce identical results - -### Success Criteria - -**Performance:** -- [PASS] Scalar < 100ns/tile: **83.67ns/tile** ✓ -- [PARTIAL] SIMD < 1000ns/tile: 4875ns/tile (scalar is faster) -- [FAIL] SIMD speedup >= 8x: 0.0x (scalar is 58x faster) - -**Correctness:** -- [PASS] SIMD matches scalar: noise diff = 0.0045 < 0.01 ✓ - -**Code Quality:** -- [PASS] Zero compilation errors ✓ -- [PASS] 100% test pass rate (68/68) ✓ -- [PARTIAL] Clippy warnings: 23 remaining (down from 44) - ---- - -## Recommendations - -### For Users - -1. **Use scalar implementation** for typical use cases - - Single-vector snapping: `manifold.snap(vector)` - - Small batches: `manifold.snap_batch()` - - Better performance than SIMD for < 100 vectors - -2. **Use SIMD implementation** only for large batches - - Large batch processing: `manifold.snap_batch_simd()` - - Only beneficial for > 1000 vectors - - Even then, test to verify it's faster - -3. **Choose manifold density carefully** - - Density 50: Good for most applications (~1K states) - - Density 200: High precision (~40K states) - - Density 500+: Only if needed (diminishing returns) - -### For Developers - -1. **Focus on scalar optimization** - - KD-tree is already very effective - - Further scalar optimizations will benefit both paths - - Consider cache-friendly data layouts - -2. **Reconsider SIMD strategy** - - Current SIMD approach has too much overhead - - Need batch KD-tree queries to make SIMD worthwhile - - Or focus on vectorizing internal operations only - -3. **Profile before optimizing** - - Benchmark shows counterintuitive result - - Always measure on real workloads - - Different use cases may have different optimal strategies - ---- - -## Next Steps (Round 9) - -### High Priority -1. Complete remaining documentation (23 warnings) -2. Implement batch KD-tree queries -3. Add cache alignment to data structures -4. Create performance comparison chart - -### Medium Priority -1. Add property-based testing -2. Expand edge case coverage -3. Create interactive performance visualization -4. Add more benchmark scenarios - -### Low Priority -1. Investigate AVX-512 support -2. Research GPU acceleration options -3. Explore approximate nearest neighbor algorithms -4. Create optimization roadmap - ---- - -## Conclusion - -Round 8 successfully improved code quality and revealed important performance characteristics. The key insight is that the KD-tree optimization is so effective that SIMD provides no benefit for typical use cases. This validates the architectural decision to prioritize algorithmic optimization (O(N) → O(log N)) over micro-optimizations (SIMD). - -**Test Suite:** 68 tests passing in 0.44s ✓ -**Code Quality:** 48% reduction in clippy warnings ✓ -**Performance:** Scalar implementation at 83.67ns/tile ✓ -**Documentation:** Enhanced with detailed examples and safety guarantees ✓ - -**Status:** Ready for Round 9 - Final polishing and optimization. - ---- - -**Generated:** 2026-03-18 -**Round:** 8 of 10 -**Next Review:** Round 9 completion diff --git a/crates/PROFILING_GUIDE.md b/crates/PROFILING_GUIDE.md deleted file mode 100644 index 8dd2e98..0000000 --- a/crates/PROFILING_GUIDE.md +++ /dev/null @@ -1,599 +0,0 @@ -# Performance Profiling Guide for Constraint Theory Core - -This guide provides step-by-step instructions for profiling the Constraint Theory Core implementation to identify bottlenecks and validate optimization opportunities. - ---- - -## Quick Start Profiling - -### 1. Flamegraph (Hotspot Analysis) - -**Install:** -```bash -cargo install flamegraph -``` - -**Run:** -```bash -cd C:/Users/casey/polln/constrainttheory/crates/constraint-theory-core -cargo flamegraph --example bench --features simd -``` - -**Output:** -- `flamegraph.svg` - Interactive flamegraph visualization -- Open in browser to see hotspot functions - -**What to look for:** -- Wide bars = time spent in that function -- Nested bars = call stack -- Look for functions consuming >20% of total time - ---- - -### 2. Cargo Profiling (Built-in) - -**Run with time reporting:** -```bash -cd C:/Users/casey/polln/constrainttheory/crates/constraint-theory-core - -# Windows PowerShell -Measure-Command { cargo run --release --example bench } - -# Linux/macOS -time cargo run --release --example bench -``` - -**Interpretation:** -- Wall clock time = total execution time -- Compare before/after optimizations - ---- - -### 3. Custom Instrumentation - -Add to `examples/bench.rs`: - -```rust -use std::time::Instant; - -fn main() { - // ... setup code ... - - let mut timing_breakdown = Vec::new(); - - // Benchmark with timing breakdown - for iter in 0..iterations { - let t_start = Instant::now(); - - // Phase 1: Normalization - let t_norm = Instant::now(); - let mut normalized = Vec::with_capacity(n); - for vec in &vectors { - let norm = (vec[0] * vec[0] + vec[1] * vec[1]).sqrt(); - normalized.push([vec[0] / norm, vec[1] / norm]); - } - let norm_time = t_norm.elapsed(); - - // Phase 2: SIMD snapping - let t_snap = Instant::now(); - let mut results = vec![([0.0f32, 0.0], 0.0f32); n]; - manifold.snap_batch_simd_into(&vectors, &mut results); - let snap_time = t_snap.elapsed(); - - // Phase 3: Result validation - let t_validate = Instant::now(); - let total_noise: f32 = results.iter().map(|(_, n)| *n).sum(); - let validate_time = t_validate.elapsed(); - - let total_time = t_start.elapsed(); - - timing_breakdown.push((norm_time, snap_time, validate_time, total_time)); - - println!("Iter {}: Total={:.2}ms, Norm={:.2}ms, Snap={:.2}ms, Valid={:.2}ms", - iter, - total_time.as_secs_f64() * 1000.0, - norm_time.as_secs_f64() * 1000.0, - snap_time.as_secs_f64() * 1000.0, - validate_time.as_secs_f64() * 1000.0 - ); - } - - // Summary - let avg_norm: f64 = timing_breakdown.iter() - .map(|(n, _, _, _)| n.as_secs_f64()).sum::() / iterations as f64; - let avg_snap: f64 = timing_breakdown.iter() - .map(|(_, s, _, _)| s.as_secs_f64()).sum::() / iterations as f64; - let avg_valid: f64 = timing_breakdown.iter() - .map(|(_, _, v, _)| v.as_secs_f64()).sum::() / iterations as f64; - - println!("\n=== Timing Breakdown ==="); - println!("Normalization: {:.2}ms ({:.1}%)", avg_norm * 1000.0, (avg_norm / (avg_norm + avg_snap)) * 100.0); - println!("Snapping: {:.2}ms ({:.1}%)", avg_snap * 1000.0, (avg_snap / (avg_norm + avg_snap)) * 100.0); - println!("Validation: {:.2}ms", avg_valid * 1000.0); -} -``` - -**Run:** -```bash -cargo run --release --example bench_instrumented -``` - ---- - -## Platform-Specific Profiling - -### Linux: perf - -**Install:** -```bash -# Ubuntu/Debian -sudo apt-get install linux-tools-generic - -# RHEL/CentOS -sudo yum install perf -``` - -**Record performance:** -```bash -# Record with call graph -perf record -g --call-graph dwarf cargo run --release --example bench - -# Report top functions -perf report --stdio | head -50 - -# Specific metrics -perf stat -e cycles,instructions,cache-references,cache-misses,branches,branch-misses \ - cargo run --release --example bench -``` - -**Key metrics:** -``` -# Instructions per cycle (IPC) -# Higher is better (max ~4 for modern CPUs) -IPC = instructions / cycles - -# Cache miss rate -# Lower is better (<5% is good) -Miss rate = cache-misses / cache-references - -# Branch misprediction rate -# Lower is better (<2% is good) -Mispredict rate = branch-misses / branches -``` - -**Analyze hot function:** -```bash -# Annotate source code with performance data -perf annotate --stdio snap_batch_avx2 - -# Show disassembly with cycle counts -perf record -b cargo run --release --example bench -perf annotate --stdio -``` - ---- - -### Windows: VTune (Intel) - -**Install:** -- Download from Intel OneAPI -- Requires Intel CPU (Xeon/Core) - -**Run:** -```powershell -# Basic hotspot analysis -vtune -collect hotspots -result-dir vtune_hotspots -- cargo run --release --example bench - -# Memory access analysis -vtune -collect memory-access -result-dir vtune_memory -- cargo run --release --example bench - -# Microarchitecture analysis -vtune -collect uarch-exploration -result-dir vtune_uarch -- cargo run --release --example bench -``` - -**View results:** -```bash -# Open GUI (recommended) -vtune -report hotspots -result-dir vtune_hotspots -format html - -# Or command-line summary -vtune -report -result-dir vtune_hotspots -format text -``` - ---- - -### Windows: Windows Performance Analyzer (WPA) - -**Record:** -```powershell -# Install Windows Performance Toolkit (part of Windows SDK) -wpr -start GeneralProfile -start CPU -cargo run --release --example bench -wpr -stop trace.etl -``` - -**Analyze:** -- Open `trace.etl` in Windows Performance Analyzer (WPA) -- View CPU usage, context switches, memory access - ---- - -### macOS: Instruments - -**Run:** -```bash -# Open Instruments.app -# Select "Time Profiler" -# Target: cargo run --release --example bench -# Record -``` - -**Or command-line:** -```bash -# Install xcrun -xcrun xctrace record --template "Time Profiler" --launch -- cargo run --release --example bench -``` - ---- - -## Hardware Performance Counters - -### Using Criterion (Rust benchmarking) - -**Add to Cargo.toml:** -```toml -[dev-dependencies] -criterion = "0.5" - -[[bench]] -name = "snap_benchmark" -harness = false -``` - -**Create `benches/snap_benchmark.rs`:** -```rust -use criterion::{black_box, criterion_group, criterion_main, Criterion, BenchmarkId}; -use constraint_theory_core::PythagoreanManifold; - -fn bench_snap(c: &mut Criterion) { - let mut group = c.benchmark_group("snap"); - - for density in [100, 200, 400, 800].iter() { - let manifold = PythagoreanManifold::new(*density); - - group.bench_with_input( - BenchmarkId::new("density", density), - density, - |b, _| { - b.iter(|| { - let vec = [0.6f32, 0.8]; - black_box(manifold.snap(vec)) - }) - }, - ); - } - - group.finish(); -} - -fn bench_snap_batch(c: &mut Criterion) { - let mut group = c.benchmark_group("snap_batch"); - - for size in [1000, 10000, 100000].iter() { - let manifold = PythagoreanManifold::new(200); - let vectors: Vec<[f32; 2]> = (0..*size) - .map(|i| { - let angle = (i as f32) * 0.0001; - [angle.sin(), angle.cos()] - }) - .collect(); - - group.bench_with_input( - BenchmarkId::new("size", size), - size, - |b, vectors| { - b.iter(|| { - black_box(manifold.snap_batch_simd(black_box(vectors))) - }) - }, - ); - } - - group.finish(); -} - -criterion_group!(benches, bench_snap, bench_snap_batch); -criterion_main!(benches); -``` - -**Run:** -```bash -cargo bench --bench snap_benchmark -``` - -**Output:** -- Detailed statistics (mean, median, stddev) -- Comparison across different input sizes -- HTML report with plots - ---- - -## Memory Profiling - -### Valgrind (Linux) - -**Install:** -```bash -sudo apt-get install valgrind -``` - -**Run:** -```bash -# Memory leak check -valgrind --leak-check=full --show-leak-kinds=all cargo run --release --example bench - -# Cache simulation -valgrind --tool=cachegrind cargo run --release --example bench - -# View cache results -cg_annotate cachegrind.out. -``` - -### dhat (Rust heap profiler) - -**Add to Cargo.toml:** -```toml -[dependencies] -dhat = "0.3" -``` - -**Instrument code:** -```rust -#[cfg(feature = "dhat")] -fn main() { - let mut profiler = dhat::Profiler::new_heap(); - - // ... benchmark code ... - - drop(profiler); -} - -#[cfg(not(feature = "dhat"))] -fn main() { - // ... normal benchmark code ... -} -``` - -**Run:** -```bash -cargo run --release --example bench --features dhat -``` - -**Output:** -- Heap allocation profile -- Memory leaks -- Allocation hotspots - ---- - -## Identifying Bottlenecks - -### Step 1: Where is time spent? - -Run flamegraph: -```bash -cargo flamegraph --example bench -``` - -**Look for:** -1. `snap_batch_avx2` - Main SIMD function -2. `snap` - Scalar fallback -3. Normalization code (before SIMD) -4. KD-tree operations (if integrated) - -### Step 2: Is it memory-bound or compute-bound? - -Check arithmetic intensity: -```rust -// Add to benchmark -let flops = vectors.len() as f64 * manifold.state_count() as f64 * 2.0; -let bytes = (vectors.len() * 16 + manifold.state_count() * 8) as f64; -let ai = flops / bytes; // FLOPs/byte - -println!("Arithmetic Intensity: {:.2} FLOPs/byte", ai); -println!("Memory-bound? {}", ai < 1.0); -``` - -**Interpretation:** -- AI < 1: Memory-bound (optimize memory access) -- AI > 1: Compute-bound (optimize computations) - -### Step 3: Cache efficiency - -Run with perf: -```bash -perf stat -e cache-references,cache-misses,L1-dcache-loads,L1-dcache-load-misses \ - cargo run --release --example bench -``` - -**Calculate:** -``` -L1 miss rate = L1-dcache-load-misses / L1-dcache-loads -LLC miss rate = cache-misses / cache-references - -Good: L1 miss rate < 5% -Good: LLC miss rate < 1% -``` - -### Step 4: SIMD efficiency - -Check theoretical vs actual speedup: -```rust -// In benchmark -let theoretical_speedup = 8.0; // AVX2 processes 8 floats -let actual_speedup = scalar_time / simd_time; -let efficiency = actual_speedup / theoretical_speedup; - -println!("SIMD Efficiency: {:.1}%", efficiency * 100.0); -``` - -**Interpretation:** -- Efficiency > 80%: Good SIMD utilization -- Efficiency 50-80%: Some scalar overhead -- Efficiency < 50%: Significant scalar code - ---- - -## Optimization Validation - -### After each optimization: - -1. **Run full benchmark suite** - ```bash - cargo run --release --example bench > before.txt - # Make changes - cargo run --release --example bench > after.txt - - # Compare - diff before.txt after.txt - ``` - -2. **Generate new flamegraph** - ```bash - cargo flamegraph --example bench -o after.svg - # Compare with baseline flamegraph - ``` - -3. **Check regression** - ```bash - cargo bench --bench snap_benchmark - # Criterion will detect regressions automatically - ``` - -4. **Profile again** - ```bash - # Verify bottleneck moved elsewhere - perf stat -e cycles,instructions,cache-misses cargo run --release --example bench - ``` - ---- - -## Common Bottleneck Patterns - -### Pattern 1: Scalar code in SIMD function - -**Symptoms:** -- Flamegraph shows scalar operations -- SIMD efficiency < 50% - -**Fix:** -- Move scalar code to SIMD -- Use `_mm256_` intrinsics - -### Pattern 2: Cache misses - -**Symptoms:** -- High LLC miss rate (>10%) -- Flamegraph shows memory access - -**Fix:** -- Reorder data for better locality -- Add prefetching -- Use cache-aligned structures - -### Pattern 3: Branch mispredictions - -**Symptoms:** -- High branch misprediction rate (>5%) -- Conditional in hot loop - -**Fix:** -- Use branchless SIMD (`_mm256_blendv_ps`) -- Replace `if` with ternary operator - -### Pattern 4: Small batches - -**Symptoms:** -- Per-tile time decreases with batch size -- SIMD underutilization - -**Fix:** -- Increase batch size -- Process in larger chunks - ---- - -## Automation Script - -Create `scripts/profile.sh`: -```bash -#!/bin/bash - -set -e - -echo "=== Constraint Theory Performance Profiling ===" -echo - -# 1. Run benchmark -echo "1. Running benchmark..." -cargo run --release --example bench | tee benchmark_output.txt - -# 2. Generate flamegraph -echo -echo "2. Generating flamegraph..." -cargo flamegraph --example bench --features simd -echo " Generated: flamegraph.svg" - -# 3. Run perf (Linux only) -if command -v perf &> /dev/null; then - echo - echo "3. Running perf analysis..." - perf stat -e cycles,instructions,cache-references,cache-misses,branches,branch-misses \ - cargo run --release --example bench 2>&1 | tee perf_stats.txt -fi - -# 4. Run Criterion benchmarks -echo -echo "4. Running Criterion benchmarks..." -cargo bench --bench snap_benchmark - -echo -echo "=== Profiling complete ===" -echo "Results:" -echo " - benchmark_output.txt" -echo " - flamegraph.svg" -echo " - perf_stats.txt (Linux)" -echo " - criterion report (target/criterion)" -``` - -**Run:** -```bash -chmod +x scripts/profile.sh -./scripts/profile.sh -``` - ---- - -## Next Steps - -After profiling: - -1. **Identify top bottleneck** - - Usually the function with most time in flamegraph - -2. **Hypothesize optimization** - - "KD-tree would reduce time from O(N) to O(log N)" - -3. **Implement optimization** - - Make targeted change - -4. **Measure impact** - - Re-run profiling - - Compare before/after - -5. **Iterate** - - Move to next bottleneck - ---- - -**Remember:** Premature optimization is the root of all evil. Always profile first, optimize second. diff --git a/crates/QUICK_REFERENCE.md b/crates/QUICK_REFERENCE.md deleted file mode 100644 index 2a4e906..0000000 --- a/crates/QUICK_REFERENCE.md +++ /dev/null @@ -1,361 +0,0 @@ -# Performance Optimization Quick Reference - -**For developers implementing the Constraint Theory optimizations** - ---- - -## Current Status (2026-03-16) - -``` -Performance: 5.07 μs/tile -Target: 0.10 μs/tile -Gap: 51x slower - -Bottleneck: O(N) linear search through 40,384 states -Status: Ready for Phase 1 (KD-tree integration) -``` - ---- - -## Quick Commands - -### Benchmark Current Performance -```bash -cd C:/Users/casey/polln/constrainttheory/crates/constraint-theory-core -cargo run --release --example bench_profiled -``` - -### Generate Flamegraph -```bash -cargo install flamegraph -cargo flamegraph --example bench_profiled -# Open flamegraph.svg in browser -``` - -### Run All Tests -```bash -cargo test --release -``` - -### Check Compilation -```bash -cargo build --release -``` - ---- - -## File Locations - -### Performance Files -``` -C:/Users/casey/polln/constrainttheory/crates/constraint-theory-core/ -├── OPTIMIZATION_ROADMAP.md # Detailed optimization plan -├── PROFILING_GUIDE.md # Platform-specific profiling -├── PERFORMANCE_ANALYSIS_SUMMARY.md # Executive summary -├── QUICK_REFERENCE.md # This file -└── examples/ - ├── bench.rs # Basic benchmark - └── bench_profiled.rs # Detailed profiling benchmark -``` - -### Source Files -``` -src/ -├── simd.rs # SIMD implementation (HOTSPOT) -├── manifold.rs # PythagoreanManifold (needs KD-tree) -├── kdtree.rs # KD-tree implementation (ready to integrate) -└── lib.rs # Module exports -``` - ---- - -## Optimization Checklist - -### Phase 1: KD-tree Integration (HIGH PRIORITY) -- [ ] Fix KD-tree compilation error (line 246) -- [ ] Add `kdtree` field to `PythagoreanManifold` -- [ ] Implement `snap()` using KD-tree -- [ ] Add fallback to linear search -- [ ] Benchmark KD-tree vs linear -- [ ] Validate 5-10x speedup -- [ ] Update documentation - -**Code snippet:** -```rust -// In manifold.rs -pub struct PythagoreanManifold { - valid_states: Vec<[f32; 2]>, - kdtree: Option, // ADD THIS -} - -impl PythagoreanManifold { - pub fn new(density: usize) -> Self { - let states = /* ... generate states ... */; - let kdtree = Some(KDTree::build(&states)); // BUILD TREE - Self { valid_states: states, kdtree } - } - - pub fn snap(&self, vector: [f32; 2]) -> ([f32; 2], f32) { - if let Some(tree) = &self.kdtree { - if let Some((nearest, _idx, dist_sq)) = tree.nearest(&vector) { - let noise = 1.0 - (1.0 - dist_sq.sqrt()).max(0.0); - return (nearest, noise); - } - } - // Fallback to linear search - // ... existing code ... - } -} -``` - -### Phase 2: Memory Optimization (MEDIUM PRIORITY) -- [ ] Profile cache performance (perf/VTune) -- [ ] Add cache alignment to data structures -- [ ] Implement spatial clustering of states -- [ ] Add prefetching in SIMD code -- [ ] Benchmark cache improvements -- [ ] Validate 2-3x speedup - -**Code snippet:** -```rust -// Cache-aligned states -#[repr(align(64))] -pub struct AlignedStates { - states: Vec<[f32; 2]>, -} - -// Prefetching -#[cfg(target_arch = "x86_64")] -unsafe { - _mm_prefetch(&states[next_idx] as *const _ as *const i8, _MM_HINT_T0); -} -``` - -### Phase 3: Multi-threading (LOW PRIORITY) -- [ ] Add Rayon dependency -- [ ] Implement parallel batch processing -- [ ] Tune thread pool configuration -- [ ] Benchmark scaling with cores -- [ ] Validate 4-8x speedup - -**Code snippet:** -```toml -# In Cargo.toml -[dependencies] -rayon = "1.8" -``` - -```rust -// In manifold.rs -use rayon::prelude::*; - -impl PythagoreanManifold { - pub fn snap_batch_parallel(&self, vectors: &[[f32; 2]]) -> Vec<([f32; 2], f32)> { - vectors.par_iter() - .map(|&vec| self.snap(vec)) - .collect() - } -} -``` - ---- - -## Performance Targets - -### Phase 1 Complete -``` -Per-tile: < 1.0 μs -Speedup: 5-10x from baseline -Progress: 10-20% toward target -``` - -### Phase 2 Complete -``` -Per-tile: < 0.5 μs -Speedup: 10-30x from baseline -Progress: 33-100% toward target -``` - -### Phase 3 Complete -``` -Per-tile: < 0.1 μs (single-core) - < 0.02 μs (8-core) -Speedup: 50-400x from baseline -Progress: TARGET MET (and exceeded) -``` - ---- - -## Common Issues - -### Issue: KD-tree compilation error -``` -error[E0308]: mismatched types - --> src\kdtree.rs:246:29 - | -246 | if let Some(&worst_dist) = results.worst_distance() { - | ^^^^^^^^^^^ ------------------------ this expression has type `Option -``` - -**Fix:** -```bash -cd C:/Users/casey/polln/constrainttheory/crates/constraint-theory-core -sed -i 's/if let Some(&worst_dist)/if let Some(worst_dist)/' src/kdtree.rs -``` - -### Issue: SIMD not available -``` -panic: "AVX2 not available" -``` - -**Fix:** Check CPU supports AVX2: -```rust -use std::arch::x86_64::_mm256_check_cpuid; - -if !is_x86_feature_detected!("avx2") { - println!("AVX2 not supported, falling back to scalar"); -} -``` - -### Issue: Performance regression -``` -Per-tile: 10.2 μs (slower than 5.07 μs baseline!) -``` - -**Debug:** -1. Run flamegraph to find new bottleneck -2. Check for accidental scalar fallback -3. Verify compiler optimization level (`--release`) -4. Check for debug assertions (`debug_assertions`) - ---- - -## Benchmarking Tips - -### Always Run in Release Mode -```bash -cargo run --release --example bench_profiled -# NOT: cargo run --example bench_profiled -``` - -### Warm Up Before Measuring -```rust -// Always warm up (3-5 iterations) -for _ in 0..3 { - let _ = manifold.snap_batch_simd(&warmup_vectors); -} - -// Then measure -let start = Instant::now(); -// ... benchmark code ... -``` - -### Run Multiple Iterations -```rust -let iterations = 5; -for iter in 0..iterations { - // ... benchmark code ... -} -// Report average, not single run -``` - -### Check for Correctness -```rust -// Always verify results match reference -let simd_results = manifold.snap_batch_simd(&vectors); -let scalar_results = /* ... scalar version ... */; - -assert_eq!(simd_results, scalar_results, "SIMD results differ!"); -``` - ---- - -## Profiling Quick Start - -### Linux (perf) -```bash -# Record performance -perf record -g cargo run --release --example bench_profiled - -# Report top functions -perf report --stdio | head -50 - -# Cache statistics -perf stat -e cache-references,cache-misses,L1-dcache-loads,L1-dcache-load-misses \ - cargo run --release --example bench_profiled -``` - -### Windows (VTune) -```powershell -# Hotspot analysis -vtune -collect hotspots -result-dir vtune_hotspots -- cargo run --release --example bench_profiled - -# Memory access -vtune -collect memory-access -result-dir vtune_memory -- cargo run --release --example bench_profiled -``` - -### macOS (Instruments) -```bash -# Open Instruments.app -# Select "Time Profiler" -# Target: cargo run --release --example bench_profiled -``` - ---- - -## Key Metrics to Track - -| Metric | Current | Target | How to Measure | -|--------|---------|--------|----------------| -| Per-tile latency | 5.07 μs | 0.10 μs | `bench_profiled` | -| SIMD efficiency | 86% | >90% | Compare to scalar | -| L1 cache hit rate | Unknown | >80% | `perf stat -e L1-dcache-loads` | -| Memory bandwidth | 63.67 GB/s | N/A | `bench_profiled` | -| Arithmetic intensity | 0.25 | N/A | `bench_profiled` | - ---- - -## Getting Help - -### Documentation -- `OPTIMIZATION_ROADMAP.md` - Detailed optimization plan -- `PROFILING_GUIDE.md` - Platform-specific profiling -- `PERFORMANCE_ANALYSIS_SUMMARY.md` - Executive summary - -### Code Comments -- `src/simd.rs` - SIMD implementation details -- `src/manifold.rs` - Pythagorean manifold API -- `src/kdtree.rs` - KD-tree implementation - -### Online Resources -- [Rust Performance Book](https://nnethercote.github.io/perf-book/) -- [Intel Intrinsics Guide](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/) -- [SIMD for C++ Developers](https://www.codeproject.com/Articles/874396/Crunching-Numbers-with-AVX-and-AVX) - ---- - -## Summary - -**Current bottleneck:** Linear search through 40,384 states - -**Solution:** KD-tree integration (already implemented in `src/kdtree.rs`) - -**Expected speedup:** 5-10x - -**Time to implement:** 3-5 days - -**Next action:** Integrate KD-tree into `PythagoreanManifold` - -**Files to modify:** -- `src/manifold.rs` - Add KD-tree field and methods -- `src/kdtree.rs` - Already fixed compilation error - -**Success criteria:** -- Benchmark shows 5-10x speedup -- Per-tile latency < 1.0 μs -- Zero correctness regressions - ---- - -**Last Updated:** 2026-03-16 -**Status:** Ready for Phase 1 implementation diff --git a/crates/RELEASE_NOTES_v1.0.0.md b/crates/RELEASE_NOTES_v1.0.0.md deleted file mode 100644 index f0e0457..0000000 --- a/crates/RELEASE_NOTES_v1.0.0.md +++ /dev/null @@ -1,514 +0,0 @@ -# ConstraintTheory Core v1.0.0 - Release Notes - -**Release Date:** March 18, 2026 -**Version:** 1.0.0 -**Status:** Production Ready ✅ - ---- - -## Overview - -ConstraintTheory Core v1.0.0 is a **production-ready** geometric constraint engine for cellular agent infrastructure. This release represents 10 rounds of rigorous polishing, achieving zero technical debt, comprehensive documentation, and verified examples across multiple domains. - -### What is ConstraintTheory Core? - -A high-performance Rust library providing: -- **Pythagorean Manifold:** O(log N) geometric snapping to discrete states -- **KD-Tree Indexing:** Efficient spatial queries for agent positioning -- **Curvature Flow:** Ricci flow for geometric evolution -- **Rigidity Analysis:** Laman's theorem for structural constraints -- **Cohomology:** Topological invariants for constraint satisfaction -- **Gauge Theory:** Parallel transport on curved manifolds - -### Target Use Cases - -- **Cellular Agents:** FPS-style agent positioning (not RTS god's eye view) -- **Geometric State Space:** Deterministic computation via constraints -- **Spatial Queries:** O(log N) neighbor discovery -- **ML Integration:** Embedding normalization and discretization -- **Robotics:** Motion planning and sensor fusion -- **Visualization:** Grid snapping and procedural generation - ---- - -## Highlights - -### 🎯 Production Quality -- **ZERO clippy warnings** (100% compliance) -- **100% test pass rate** (68 unit tests + 14 doc tests) -- **Zero technical debt** (no TODOs or FIXMEs) -- **Professional code quality** throughout - -### 📚 Complete Documentation -- **100% API coverage** with examples -- **3 real-world examples** (ML, visualization, robotics) -- **All unsafe blocks** documented with safety explanations -- **Comprehensive guides** for integration - -### ⚡ Performance Verified -- **O(log N) spatial queries** via KD-tree -- **83.67 ns/tile** for single snaps -- **~2MB memory** for 40K states (density=200) -- **Benchmark suite** with profiling tools - -### 🔒 Safety First -- **Zero dependencies** (no external runtime deps) -- **Memory-safe** Rust implementation -- **Unsafe code documented** with invariants -- **Bounds checking** on all operations - ---- - -## What's New in v1.0.0 - -### Since v0.1.0 (Initial Release) - -#### Code Quality Improvements -- ✅ Eliminated all 37 clippy warnings (100% reduction) -- ✅ Fixed all code style issues -- ✅ Removed unused code and imports -- ✅ Improved error messages - -#### Documentation Enhancements -- ✅ Added 100% API documentation coverage -- ✅ Created 3 real-world examples -- ✅ Added 14 doc tests for API examples -- ✅ Documented all unsafe blocks - -#### Example Programs -- ✅ **ML Integration** (`ml_integration.rs`) - - Embedding normalization - - Feature discretization - - Batch processing - - Dimensionality reduction - -- ✅ **Visualization** (`visualization.rs`) - - Grid snapping for UI - - Procedural generation - - Tile rendering - - Color quantization - -- ✅ **Robotics** (`robotics.rs`) - - Motion discretization - - Path planning - - Terrain analysis - - Sensor fusion - -#### Performance Optimizations -- ✅ Discovered scalar is 58x faster than SIMD for typical use -- ✅ Optimized KD-tree construction -- ✅ Improved memory layout -- ✅ Added profiling benchmarks - ---- - -## API Stability - -### Stable APIs -All public APIs are **stable** and **covered by semantic versioning**: - -- `PythagoreanManifold` - Core geometric snapping -- `PythagoreanTriple` - Discrete state representation -- `KDTree` - Spatial indexing -- `RicciFlow` - Curvature evolution -- `FastCohomology` - Topological computation -- `GaugeConnection` - Parallel transport - -### Deprecated APIs -None. This is a fresh 1.0.0 release. - -### Experimental Features -None. All features are production-ready. - ---- - -## Performance Benchmarks - -### Single Vector Snap -``` -Operation: Snap single vector to manifold -Performance: 83.67 ns/tile -Throughput: 11.9M tiles/sec -Complexity: O(log N) via KD-tree -``` - -### Batch Processing -``` -Operation: Batch snap (scalar) -Performance: ~8ms for 1000 vectors -Throughput: 125K vectors/sec -Complexity: O(M log N) for M vectors -``` - -### Memory Usage -``` -Manifold (density=200): 40K states -Memory per state: 8 bytes (2 x f32) -Total memory: ~320KB -KD-tree overhead: O(N) -``` - -### Key Finding -**Scalar implementation is 58x faster than SIMD** for typical use cases due to: -- Lower overhead for small batches -- Better cache locality -- No SIMD setup cost -- Simpler code path - ---- - -## Migration Guide - -### From v0.1.0 to v1.0.0 - -#### Breaking Changes -None. v1.0.0 is API-compatible with v0.1.0. - -#### Recommended Changes -1. Update examples to use array literals instead of `vec![]` -2. Run `cargo clippy` to verify code quality -3. Update documentation to follow new patterns - -#### Example Migration -```rust -// Old (v0.1.0) -let waypoints = vec![ - [0.0, 0.0], - [1.0, 0.0], -]; - -// New (v1.0.0) - preferred -let waypoints = [ - [0.0, 0.0], - [1.0, 0.0], -]; -``` - ---- - -## Installation - -### Cargo.toml -```toml -[dependencies] -constraint-theory-core = "1.0.0" -``` - -### Build Features -```toml -# Default (no SIMD) -constraint-theory-core = "1.0.0" - -# With SIMD (AVX2 for x86_64) -constraint-theory-core = { version = "1.0.0", features = ["simd"] } -``` - -### Requirements -- Rust 1.70 or later -- No external dependencies -- Optional: AVX2-capable CPU for SIMD feature - ---- - -## Quick Start - -### Basic Usage -```rust -use constraint_theory_core::manifold::PythagoreanManifold; - -// Create manifold with density=200 -let manifold = PythagoreanManifold::new(200); - -// Snap continuous vector to discrete Pythagorean triple -let vec = [0.6f32, 0.8]; -let (snapped, noise) = manifold.snap(vec); - -assert!(noise < 0.001); // Guaranteed exact result -println!("Snapped: ({:.3}, {:.3}), noise: {:.4}", snapped[0], snapped[1], noise); -// Output: Snapped: (0.600, 0.800), noise: 0.0000 -``` - -### Batch Processing -```rust -use constraint_theory_core::manifold::PythagoreanManifold; - -let manifold = PythagoreanManifold::new(200); -let vectors = vec![ - [0.3, 0.4], - [0.6, 0.8], - [1.0, 0.0], -]; - -let results = manifold.snap_batch(&vectors); -for (original, (snapped, noise)) in vectors.iter().zip(results.iter()) { - println!("{:?} -> {:?} (noise: {:.4})", original, snapped, noise); -} -``` - -### Spatial Queries -```rust -use constraint_theory_core::manifold::PythagoreanManifold; - -let manifold = PythagoreanManifold::new(200); -let query_point = [0.5, 0.5]; - -// Find nearest 5 states -let nearest = manifold.find_nearest_k(query_point, 5); -for (idx, state) in nearest.iter().enumerate() { - println!("Neighbor {}: {:?}", idx + 1, state); -} -``` - ---- - -## Examples - -### Run Examples -```bash -# ML integration example -cargo run --release --example ml_integration - -# Visualization example -cargo run --release --example visualization - -# Robotics example -cargo run --release --example robotics - -# Benchmark suite -cargo run --release --example bench - -# Profiled benchmark -cargo run --release --example bench_profiled -``` - -### Example Output -``` -================================================ -ConstraintTheory - ML Integration Example -================================================ - -Example 1: Embedding Normalization ------------------------------------ - -Original embeddings -> Normalized embeddings: - (0.342, 0.940) -> (0.342, 0.940) | noise = 0.0000 - (0.600, 0.800) -> (0.600, 0.800) | noise = 0.0000 - (0.707, 0.707) -> (0.707, 0.707) | noise = 0.0000 - (0.960, 0.280) -> (0.960, 0.280) | noise = 0.0000 -``` - ---- - -## Testing - -### Run Tests -```bash -# All tests -cargo test --release - -# Unit tests only -cargo test --lib --release - -# Doc tests -cargo test --doc --release - -# With output -cargo test --release -- --nocapture -``` - -### Test Coverage -- **68 unit tests** (100% pass rate) -- **14 doc tests** (100% pass rate) -- **Total: 82 tests** - -### Test Categories -- Edge case tests: 43 -- KD-tree tests: 7 -- Manifold tests: 10 -- Curvature tests: 3 -- Cohomology tests: 2 -- Percolation tests: 1 -- SIMD tests: 2 - ---- - -## Documentation - -### API Documentation -```bash -# Build and open docs -cargo doc --open - -# For public APIs only -cargo doc --no-deps --open -``` - -### Guides -- **README.md** - Project overview and quick start -- **CHANGELOG.md** - Version history and changes -- **DISCLAIMERS.md** - Scope and limitations -- **BENCHMARKS.md** - Performance methodology -- **TUTORIAL.md** - Step-by-step guide - -### Research Papers -- **MATHEMATICAL_FOUNDATIONS_DEEP_DIVE.md** (45 pages) -- **THEORETICAL_GUARANTEES.md** (30 pages) -- **GEOMETRIC_INTERPRETATION.md** (25 pages) - ---- - -## Known Limitations - -### Performance -- **SIMD not optimal** for small batches (use scalar) -- **No multi-threading** in current implementation -- **Memory overhead** for very high densities - -### Scope -- **2D only** (no 3D or nD support yet) -- **Pythagorean triples only** (not general constraint solving) -- **Rust-only** (no C FFI yet) - -### Future Work -- AVX-512 support (16-way parallelism) -- GPU acceleration (CUDA/WebGPU) -- Multi-threaded batch processing -- Higher-dimensional generalizations - ---- - -## Dependencies - -### Runtime Dependencies -**None.** This crate has zero external runtime dependencies. - -### Dev Dependencies -- `rand = "0.8"` - For testing only - -### Build Dependencies -- Standard Rust toolchain only -- Optional: AVX2-capable CPU for SIMD feature - ---- - -## Platform Support - -### Supported Platforms -- ✅ Linux (x86_64) -- ✅ macOS (x86_64, ARM64) -- ✅ Windows (x86_64) -- ✅ WebAssembly (wasm32-wasi) - -### SIMD Support -- ✅ AVX2 (x86_64) via `simd` feature -- ❌ AVX-512 (planned) -- ❌ NEON (ARM) (planned) -- ❌ WebGPU (planned) - ---- - -## Quality Metrics - -### Code Quality -- **Clippy warnings:** 0 (100% compliance) -- **Compiler warnings:** 0 -- **Unsafe blocks:** 3 (all documented) -- **TODOs/FIXMEs:** 0 - -### Testing -- **Test coverage:** 100% of public APIs -- **Pass rate:** 100% (82/82 tests) -- **Execution time:** ~1.4s total - -### Documentation -- **API coverage:** 100% -- **Example coverage:** 100% -- **Safety docs:** 100% for unsafe code - ---- - -## Contributing - -We welcome contributions! Please see: -- **IMPLEMENTATION_GUIDE.md** for development guidelines -- **ARCHITECTURE.md** for system design -- **Code of Conduct** (to be added) - -### Areas of Interest -- Higher-dimensional generalizations -- GPU implementations -- Application case studies -- Performance optimizations -- Integration with claw and spreadsheet-moment - ---- - -## License - -MIT License - see [LICENSE](../../LICENSE) for details. - ---- - -## Acknowledgments - -### Research Foundation -Based on 60+ research papers in: -- Differential geometry -- Topological constraint theory -- Discrete geometric mechanics -- Computational topology - -### Related Projects -- **SuperInstance/claw** - Cellular agent engine -- **SuperInstance/spreadsheet-moment** - Agentic spreadsheet platform -- **SuperInstance/dodecet-encoder** - 12-bit geometric encoding - ---- - -## Support - -### Documentation -- **Website:** https://constraint-theory.superinstance.ai -- **Docs:** https://constraint-theory.superinstance.ai/docs.html -- **GitHub:** https://github.com/SuperInstance/Constraint-Theory - -### Community -- **Issues:** https://github.com/SuperInstance/Constraint-Theory/issues -- **Discussions:** https://github.com/SuperInstance/Constraint-Theory/discussions - -### Contact -- **Email:** info@superinstance.ai -- **Project:** SuperInstance - ---- - -## Release Summary - -### What's Ready -✅ Production-ready codebase -✅ Complete documentation -✅ Verified examples -✅ Comprehensive tests -✅ Performance benchmarks -✅ Zero technical debt - -### What's Next -- Property-based testing -- Interactive visualizations -- GPU acceleration -- Multi-threading -- Higher dimensions - ---- - -**Version:** 1.0.0 -**Status:** Production Ready ✅ -**Date:** March 18, 2026 -**Rounds:** 10 of 10 completed -**Quality:** Professional, zero-debt, fully documented - ---- - -**Download:** https://crates.io/crates/constraint-theory-core -**Repository:** https://github.com/SuperInstance/Constraint-Theory -**Documentation:** https://constraint-theory.superinstance.ai diff --git a/crates/ROUND_10_COMPLETION_SUMMARY.md b/crates/ROUND_10_COMPLETION_SUMMARY.md deleted file mode 100644 index 32425ee..0000000 --- a/crates/ROUND_10_COMPLETION_SUMMARY.md +++ /dev/null @@ -1,460 +0,0 @@ -# ConstraintTheory MVP - Round 10 Completion Summary (FINAL) - -**Repository:** https://github.com/SuperInstance/Constraint-Theory -**Component:** constraint-theory-core -**Date:** 2026-03-18 -**Round:** 10 of 10 (FINAL) -**Status:** ✅ COMPLETE - PRODUCTION READY - ---- - -## Executive Summary - -Round 10 marks the **FINAL round** of the ConstraintTheory MVP polishing process. This round successfully achieved **production-ready status** with zero technical debt, complete documentation, and verified examples across multiple domains. - -### Key Achievements - -✅ **ZERO Clippy Warnings** - Maintained 100% clippy compliance (Round 9 → Round 10) -✅ **All Examples Verified** - All 3 real-world examples run successfully -✅ **Documentation Complete** - 100% of public APIs documented with examples -✅ **Unsafe Blocks Documented** - All unsafe code has safety explanations -✅ **No Technical Debt** - Zero TODOs or FIXMEs in codebase -✅ **100% Test Pass Rate** - All 68 unit tests + 14 doc tests passing -✅ **Production Ready** - Ready for v1.0.0 release - ---- - -## Round 10 Focus Areas - -### 1. Code Quality Excellence - -#### Clippy Compliance -- **Status:** ZERO warnings (100% compliance) -- **Round 9:** 37 warnings → 0 warnings -- **Round 10:** 0 warnings → 0 warnings (maintained) -- **Achievement:** Production-grade code quality - -#### Fixes Applied -1. **Fixed useless_vec warnings** (2 warnings) - - `examples/visualization.rs` line 66: Changed `vec![Tile::new(0), ...]` to `[Tile::new(0), ...]` - - `examples/visualization.rs` line 146: Changed `vec![(...), ...]` to `[(...), ...]` - - `examples/robotics.rs` line 49: Changed `vec![[0.0, 0.0], ...]` to `[[0.0, 0.0], ...]` - -#### Rationale -Array literals are more efficient than `vec![]` when the size is known at compile time: -- No heap allocation -- Better cache locality -- Clearer intent (fixed-size array) -- Clippy enforcement for best practices - -### 2. Documentation Validation - -#### Documentation Coverage -- **100%** of public structs documented -- **100%** of public methods documented -- **100%** include usage examples -- **100%** include parameter descriptions -- **100%** include return value specifications -- **100%** of unsafe blocks have safety explanations - -#### Documentation Quality -Each documented item includes: -- Clear description of purpose -- Detailed parameter explanations -- Return value specifications -- Usage examples (compilable and tested) -- Error conditions where applicable -- Safety explanations for unsafe code - -### 3. Example Verification - -#### Examples Tested -All 3 real-world examples verified working: - -**1. ML Integration Example** (`examples/ml_integration.rs`) -- ✅ Embedding normalization for neural networks -- ✅ Feature discretization for ML pipelines -- ✅ Batch processing for inference optimization -- ✅ Feature bucketing for quantization -- ✅ Dimensionality reduction validation - -**2. Visualization Example** (`examples/visualization.rs`) -- ✅ Grid snapping for UI layout -- ✅ Procedural generation of directions -- ✅ Tile rendering with constraints -- ✅ Rigidity analysis for structures -- ✅ Symmetry detection algorithms -- ✅ Color quantization (RGB to 2D) - -**3. Robotics Example** (`examples/robotics.rs`) -- ✅ Motion direction discretization -- ✅ Path planning through waypoints -- ✅ Terrain analysis using Ricci flow -- ✅ Obstacle avoidance algorithms -- ✅ Sensor fusion techniques -- ✅ Parallel transport on manifolds - -### 4. Code Quality Validation - -#### Unsafe Block Audit -- **Total unsafe blocks:** 3 (all in `src/simd.rs`) -- **Documentation status:** 100% documented -- **Safety explanations:** Complete for all blocks - -#### Safety Documentation Example -```rust -/// # Safety -/// -/// This function is marked unsafe because it uses AVX2 intrinsics which require: -/// - CPU support for AVX2 instructions -/// - Properly aligned memory access (handled internally) -/// - Correct bounds checking (handled internally) -/// -/// The safe wrapper `snap_batch_simd()` checks CPU support before calling this. -pub unsafe fn snap_batch_avx2(...) { - // Implementation -} -``` - -#### TODO/FIXME Audit -- **Total TODOs found:** 0 -- **Total FIXMEs found:** 0 -- **Technical debt:** ZERO -- **Code cleanliness:** Excellent - -### 5. Testing Verification - -#### Test Suite Status -- **Total tests:** 68 unit tests + 14 doc tests = 82 total -- **Pass rate:** 100% -- **Execution time:** ~0.5s (unit) + ~0.9s (doc) = 1.4s total -- **Coverage:** All major code paths exercised - -#### Test Categories -- Edge case tests: 43 (comprehensive boundary testing) -- KD-tree tests: 7 (spatial indexing) -- Manifold tests: 10 (Pythagorean snapping) -- Curvature tests: 3 (Ricci flow) -- Cohomology tests: 2 (topological invariants) -- Percolation tests: 1 (rigidity analysis) -- SIMD tests: 2 (vectorization verification) -- Doc tests: 14 (API examples) - -### 6. Performance Validation - -#### Benchmark Results -All benchmarks executed successfully: - -**Simple Benchmark** (`examples/bench.rs`) -- Scalar performance: ~8ms per batch -- SIMD performance: ~500ms per batch -- **Finding:** Scalar is 58x faster for typical use cases -- **Reason:** SIMD overhead outweighs benefits for small batches - -**Profiled Benchmark** (`examples/bench_profiled.rs`) -- Comprehensive performance analysis -- Memory access patterns identified -- Optimization recommendations provided -- Target: <0.1 us/tile (current: ~5 us/tile) - -#### Performance Characteristics -| Operation | Complexity | Performance | -|-----------|-----------|-------------| -| Single snap | O(log N) | ~83ns | -| Batch snap (scalar) | O(M log N) | ~8ms for 1000 vectors | -| Batch snap (SIMD) | O(M log N / 8) | ~500ms for 1000 vectors | -| KD-tree build | O(N log N) | One-time cost | - ---- - -## Files Modified - -### Source Code Changes (Round 10) - -**Code Quality Improvements:** -1. `examples/visualization.rs` - Fixed 2 useless_vec warnings (lines 66, 146) -2. `examples/robotics.rs` - Fixed 1 useless_vec warning (line 49) - -**Documentation Updates:** -3. `CHANGELOG.md` - Added Round 10 completion status and v1.0.0 readiness - -### New Files Created - -**Documentation:** -4. `ROUND_10_COMPLETION_SUMMARY.md` - This document - ---- - -## Code Quality Metrics - -### Round 10 Goals vs Achievements - -| Goal | Target | Achieved | Status | -|------|--------|----------|--------| -| **Clippy warnings** | 0 | **0** | ✅ **MAINTAINED** | -| **Test execution time** | < 1s | 0.5s | ✅ Exceeded | -| **Documentation coverage** | 100% | **100%** | ✅ Maintained | -| **API examples** | All public | **100%** | ✅ Maintained | -| **Examples verified** | All working | **100%** | ✅ Complete | -| **Unsafe blocks documented** | All | **100%** | ✅ Complete | -| **TODOs/FIXMEs** | 0 | **0** | ✅ Complete | -| **Code quality** | Professional | **Production** | ✅ Exceeded | - -### Documentation Quality -- ✅ All public structs documented -- ✅ All public methods documented -- ✅ All documentation includes examples -- ✅ All examples compile and run -- ✅ Parameter descriptions detailed -- ✅ Return values specified -- ✅ Error conditions documented -- ✅ Unsafe blocks have safety explanations - ---- - -## Technical Insights - -### Key Learnings from Round 10 - -1. **Code Quality Maintenance** - - Zero warnings achievable with systematic approach - - Automated enforcement (clippy) prevents regression - - Consistent code reviews maintain quality - -2. **Documentation Excellence** - - Comprehensive docs reduce support burden - - Examples serve as both docs and tests - - Safety explanations critical for unsafe code - -3. **Example-Driven Validation** - - Real-world examples validate API usability - - Different domains expose missing features - - Examples serve as tutorial content - -4. **Production Readiness** - - Zero technical debt essential for v1.0 - - Complete test suite prevents regressions - - Documentation enables easy adoption - ---- - -## Production Readiness Checklist - -### Code Quality ✅ -- [x] Zero clippy warnings -- [x] Zero compilation errors -- [x] All unsafe blocks documented -- [x] No TODOs or FIXMEs -- [x] Consistent code style -- [x] Professional code quality - -### Testing ✅ -- [x] 100% test pass rate (68 unit tests) -- [x] 100% doc test pass rate (14 doc tests) -- [x] Edge cases covered -- [x] Performance benchmarks verified -- [x] All examples tested - -### Documentation ✅ -- [x] All public APIs documented -- [x] All documentation includes examples -- [x] Parameter descriptions complete -- [x] Return values specified -- [x] Error conditions documented -- [x] Safety explanations for unsafe code - -### Release Preparation ✅ -- [x] CHANGELOG.md updated -- [x] Version numbers consistent -- [x] Release notes prepared -- [x] Migration guide ready -- [x] v1.0.0 ready for release - ---- - -## Comparison: Round 9 vs Round 10 - -| Metric | Round 9 | Round 10 | Change | -|--------|---------|---------|---------| -| **Clippy warnings** | 0 | **0** | ✅ Maintained | -| **Documentation coverage** | 100% | **100%** | ✅ Maintained | -| **Examples verified** | 0 | **3** | +3 verified | -| **Unsafe blocks documented** | 100% | **100%** | ✅ Maintained | -| **TODOs/FIXMEs** | 0 | **0** | ✅ Maintained | -| **Test pass rate** | 100% | **100%** | ✅ Maintained | -| **Production ready** | Near | **Yes** | ✅ Achieved | - ---- - -## Success Criteria - -### Round 10 Goals vs Achievements - -| Goal | Target | Achieved | Status | -|------|--------|----------|--------| -| **Clippy warnings** | 0 | **0** | ✅ **MAINTAINED** | -| **Documentation** | Complete | **Complete** | ✅ **MAINTAINED** | -| **Examples** | All verified | **All verified** | ✅ **COMPLETE** | -| **Tests** | 100% pass | **100%** | ✅ **MAINTAINED** | -| **Unsafe blocks** | All documented | **All documented** | ✅ **COMPLETE** | -| **TODOs** | 0 | **0** | ✅ **COMPLETE** | -| **Production ready** | Yes | **Yes** | ✅ **ACHIEVED** | - ---- - -## Recommendations for Users - -1. **Use the Examples** - - Run `cargo run --release --example ml_integration` for ML workflows - - Run `cargo run --release --example visualization` for graphics - - Run `cargo run --release --example robotics` for motion planning - -2. **Read the API Docs** - - All public APIs fully documented with examples - - Use `cargo doc --open` to browse documentation - - Examples are tested and guaranteed to work - -3. **Trust the Quality** - - Zero clippy warnings = professional code quality - - 100% test coverage = reliable behavior - - Comprehensive docs = easy integration - - Production-ready = stable for v1.0.0 - ---- - -## Recommendations for Developers - -1. **Maintain Zero Warnings** - - Run `cargo clippy --all-targets -- -W clippy::all` before committing - - Treat warnings as bugs - - Use CI to enforce clippy checks - -2. **Keep Documentation Updated** - - Document new APIs immediately - - Include examples with all public functions - - Update docs when changing behavior - -3. **Add Examples for Features** - - Create examples for new use cases - - Test examples in CI - - Reference examples in API docs - -4. **Continue Test Coverage** - - Add tests for new features - - Maintain 100% pass rate - - Use doc tests for API examples - -5. **Document Unsafe Code** - - Always explain why unsafe is necessary - - Specify safety invariants - - Document how safety is ensured - ---- - -## Git Information - -### Files Changed (Round 10) -- **Modified:** 3 files -- **Added:** 1 file -- **Total changes:** ~50 lines modified, ~200 lines added - -### Test Results (Final) -``` -test result: ok. 68 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out -Doc test result: ok. 14 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out -``` - -### Clippy Results (Final) -``` -cargo clippy --all-targets -- -W clippy::all -warning: 0 warnings emitted -``` - ---- - -## Performance Characteristics - -### Time Complexity -| Operation | Complexity | Notes | -|-----------|-----------|-------| -| Single snap | O(log N) | KD-tree lookup | -| Batch snap (scalar) | O(M log N) | M vectors | -| Batch snap (SIMD) | O(M log N / 8) | Theoretical, with overhead | -| KD-tree build | O(N log N) | One-time cost | -| Nearest-k search | O(k log N) | For k neighbors | - -### Space Complexity -| Structure | Space | Notes | -|-----------|-------|-------| -| Manifold (density=200) | ~40K states | 2 floats each = 320KB | -| KD-tree | O(N) | Additional tree structure | -| Batch buffer | O(M) | User-provided | - -### Performance Metrics (Final) -- **Scalar:** 83.67 ns/tile (11.9M tiles/sec) -- **SIMD:** 4875.38 ns/tile (205K tiles/sec) -- **Finding:** Scalar is 58x faster for typical use cases - ---- - -## Release Status: v1.0.0 Ready - -### Quality Metrics (Final) -- **Clippy warnings:** 0 (100% compliance) -- **Test coverage:** 100% (68 unit tests + 14 doc tests) -- **Documentation:** 100% of public APIs documented -- **Examples:** 3 real-world examples verified working -- **Unsafe blocks:** All documented with safety explanations -- **TODOs/FIXMEs:** 0 (zero technical debt) -- **Code quality:** Professional, production-ready - -### Production Readiness -✅ **Code Quality:** Zero warnings, consistent style -✅ **Testing:** 100% pass rate, comprehensive coverage -✅ **Documentation:** Complete with examples -✅ **Performance:** Benchmarks verified -✅ **Safety:** All unsafe code documented -✅ **Debt:** Zero TODOs or FIXMEs - ---- - -## Conclusion - -Round 10 has been **successfully completed**, marking the end of the 10-round MVP polishing process. The constraint-theory-core crate is now **production-ready** for v1.0.0 release. - -**Key Achievements:** -- ✅ **ZERO clippy warnings** (maintained from Round 9) -- ✅ **100% documentation coverage** with examples -- ✅ **Three real-world examples** verified working -- ✅ **100% test pass rate** maintained (82 tests total) -- ✅ **All unsafe blocks documented** with safety explanations -- ✅ **Zero technical debt** (no TODOs/FIXMEs) -- ✅ **Professional code quality** achieved -- ✅ **Production-ready** for v1.0.0 release - -**Status:** Round 10 complete, **PRODUCTION READY** for v1.0.0 release - ---- - -## Next Steps - -### Immediate Actions -1. **Create v1.0.0 release tag** -2. **Publish to crates.io** (if desired) -3. **Announce release** with documentation -4. **Monitor for issues** post-release - -### Future Enhancements (Post-v1.0) -- Property-based testing with proptest -- Interactive performance visualization -- AVX-512 support (16-way parallelism) -- GPU acceleration (CUDA/WebGPU) -- Approximate nearest neighbor algorithms -- Multi-threaded batch processing - ---- - -**Generated:** 2026-03-18 -**Round:** 10 of 10 (FINAL) -**Overall Status:** **PRODUCTION READY** - All targets achieved -**Next Milestone:** v1.0.0 Release diff --git a/crates/ROUND_10_FINAL_REPORT.md b/crates/ROUND_10_FINAL_REPORT.md deleted file mode 100644 index ae4f97a..0000000 --- a/crates/ROUND_10_FINAL_REPORT.md +++ /dev/null @@ -1,418 +0,0 @@ -# ConstraintTheory MVP - Round 10 Final Report - -**Repository:** https://github.com/SuperInstance/Constraint-Theory -**Component:** constraint-theory-core -**Date:** March 18, 2026 -**Round:** 10 of 10 (FINAL) -**Status:** ✅ COMPLETE - PRODUCTION READY - ---- - -## Executive Summary - -**Round 10 marks the successful completion** of the 10-round MVP polishing process for the constraint-theory-core crate. The project has achieved **production-ready status** and is prepared for v1.0.0 release. - -### Final Status - -| Metric | Target | Achieved | Status | -|--------|--------|----------|--------| -| **Clippy Warnings** | 0 | **0** | ✅ **PERFECT** | -| **Test Pass Rate** | 100% | **100%** | ✅ **PERFECT** | -| **Documentation Coverage** | 100% | **100%** | ✅ **PERFECT** | -| **Examples Working** | All | **All** | ✅ **PERFECT** | -| **Unsafe Blocks Documented** | All | **All** | ✅ **PERFECT** | -| **TODOs/FIXMEs** | 0 | **0** | ✅ **PERFECT** | -| **Code Quality** | Professional | **Production** | ✅ **EXCEEDED** | - ---- - -## Round 10 Deliverables - -### 1. Code Quality Excellence ✅ - -#### Clippy Compliance -- **Status:** ZERO warnings (100% compliance) -- **Achievement:** Maintained perfect score from Round 9 -- **Verification:** `cargo clippy --all-targets -- -W clippy::all` produces zero warnings - -#### Fixes Applied -- Fixed 3 `useless_vec` warnings in examples -- Replaced `vec![]` with array literals `[]` for better performance -- Improved code consistency across examples - -### 2. Documentation Completion ✅ - -#### Coverage Statistics -- **Public Structs:** 100% documented -- **Public Methods:** 100% documented -- **Usage Examples:** 100% include examples -- **Parameter Descriptions:** 100% complete -- **Return Value Specs:** 100% complete -- **Safety Explanations:** 100% for unsafe blocks - -#### Documentation Files Created -1. `ROUND_10_COMPLETION_SUMMARY.md` - Comprehensive final report (500+ lines) -2. `RELEASE_NOTES_v1.0.0.md` - Production release documentation (400+ lines) -3. `CHANGELOG.md` - Updated with Round 10 completion - -### 3. Example Verification ✅ - -#### All Examples Tested -- ✅ `ml_integration.rs` - Machine learning integration examples -- ✅ `visualization.rs` - Geometric visualization and rendering -- ✅ `robotics.rs` - Motion planning and robotics applications - -#### Example Output Verification -All examples run successfully and produce correct output: -- Embedding normalization working correctly -- Grid snapping producing exact Pythagorean triples -- Path planning finding optimal routes -- All noise levels < 0.001 (guaranteed) - -### 4. Safety Validation ✅ - -#### Unsafe Block Audit -- **Total unsafe blocks:** 3 (all in `src/simd.rs`) -- **Documentation status:** 100% documented -- **Safety explanations:** Complete with invariants specified - -#### Safety Documentation Example -```rust -/// # Safety -/// -/// This function is marked unsafe because it uses AVX2 intrinsics which require: -/// - CPU support for AVX2 instructions -/// - Properly aligned memory access (handled internally) -/// - Correct bounds checking (handled internally) -/// -/// The safe wrapper `snap_batch_simd()` checks CPU support before calling this. -pub unsafe fn snap_batch_avx2(...) { - // Implementation -} -``` - -### 5. Testing Verification ✅ - -#### Test Suite Results -``` -test result: ok. 68 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out -Doc test result: ok. 14 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out -``` - -#### Test Coverage -- **Total tests:** 82 (68 unit + 14 doc) -- **Pass rate:** 100% -- **Execution time:** ~1.6s total -- **Coverage:** All major code paths exercised - -### 6. Performance Validation ✅ - -#### Benchmarks Executed -- ✅ Simple benchmark (`bench.rs`) - PASSED -- ✅ Profiled benchmark (`bench_profiled.rs`) - PASSED -- ⚠️ Comparison benchmark (`bench_comparison.rs`) - Known issue (non-critical) - -#### Performance Metrics -- **Single snap:** 83.67 ns/tile (11.9M tiles/sec) -- **Batch snap (scalar):** ~8ms for 1000 vectors -- **Batch snap (SIMD):** ~500ms for 1000 vectors -- **Finding:** Scalar is 58x faster for typical use cases - ---- - -## Production Readiness Assessment - -### Code Quality ✅ -- [x] Zero clippy warnings -- [x] Zero compilation errors -- [x] All unsafe blocks documented -- [x] No TODOs or FIXMEs -- [x] Consistent code style -- [x] Professional code quality - -### Testing ✅ -- [x] 100% test pass rate (68 unit tests) -- [x] 100% doc test pass rate (14 doc tests) -- [x] Edge cases covered -- [x] Performance benchmarks verified -- [x] All examples tested - -### Documentation ✅ -- [x] All public APIs documented -- [x] All documentation includes examples -- [x] Parameter descriptions complete -- [x] Return values specified -- [x] Error conditions documented -- [x] Safety explanations for unsafe code - -### Release Preparation ✅ -- [x] CHANGELOG.md updated -- [x] Version numbers consistent -- [x] Release notes prepared -- [x] Migration guide ready -- [x] v1.0.0 ready for release - ---- - -## Files Modified (Round 10) - -### Source Code -1. `examples/visualization.rs` - Fixed 2 useless_vec warnings -2. `examples/robotics.rs` - Fixed 1 useless_vec warning - -### Documentation -3. `CHANGELOG.md` - Added Round 10 completion status -4. `ROUND_10_COMPLETION_SUMMARY.md` - Comprehensive final report -5. `RELEASE_NOTES_v1.0.0.md` - Production release documentation - -### Total Changes -- **Modified:** 3 files -- **Created:** 2 files -- **Lines changed:** ~50 modified, ~900 added - ---- - -## Git Commit - -### Commit Details -``` -commit 52b0556 -Author: Claude -Date: Wed Mar 18 22:35:42 2026 - -feat: Complete Round 10 - Production Ready v1.0.0 - -Round 10 (FINAL) completes the 10-round MVP polishing process for -constraint-theory-core, achieving production-ready status for v1.0.0. - -Changes: -- Fixed useless_vec warnings in examples (visualization.rs, robotics.rs) -- Updated CHANGELOG.md with Round 10 completion and v1.0.0 readiness -- Created ROUND_10_COMPLETION_SUMMARY.md with comprehensive final report -- Created RELEASE_NOTES_v1.0.0.md with production release documentation - -Quality Metrics: -- ZERO clippy warnings (100% compliance maintained from Round 9) -- 100% test pass rate (68 unit tests + 14 doc tests = 82 total) -- 100% documentation coverage with examples -- All unsafe blocks documented with safety explanations -- Zero technical debt (no TODOs or FIXMEs) -- All 3 real-world examples verified working - -Status: PRODUCTION READY for v1.0.0 release -``` - ---- - -## Quality Metrics Summary - -### Round 1-10 Progression - -| Round | Clippy Warnings | Tests | Documentation | Status | -|-------|----------------|-------|---------------|---------| -| 1-7 | N/A | 27 | Partial | Initial | -| 8 | 23 | 68 | Good | Improving | -| 9 | 0 | 68 | Excellent | Excellent | -| 10 | **0** | **82** | **Complete** | **Perfect** | - -### Final Quality Score - -``` -Code Quality: ████████████████████ 100% (Perfect) -Testing: ████████████████████ 100% (Perfect) -Documentation: ████████████████████ 100% (Perfect) -Safety: ████████████████████ 100% (Perfect) -Examples: ████████████████████ 100% (Perfect) -Performance: ████████████████░░░░ 80% (Excellent) - -Overall: ████████████████████ 97% PRODUCTION READY -``` - ---- - -## Comparison with Round 9 - -| Aspect | Round 9 | Round 10 | Improvement | -|--------|---------|---------|-------------| -| **Clippy Warnings** | 0 | 0 | ✅ Maintained | -| **Test Count** | 71 | 82 | +11 doc tests | -| **Documentation** | 100% | 100% | ✅ Maintained | -| **Examples** | Created | Verified | ✅ All working | -| **Unsafe Blocks** | Documented | Verified | ✅ All safe | -| **TODOs** | 0 | 0 | ✅ Maintained | -| **Production Ready** | Near | **Yes** | ✅ Achieved | - ---- - -## Recommendations - -### For Users - -1. **Start Using v1.0.0** - - API is stable and semantically versioned - - Zero breaking changes from v0.1.0 - - Production-ready quality - -2. **Explore Examples** - - Run `cargo run --release --example ml_integration` - - Run `cargo run --release --example visualization` - - Run `cargo run --release --example robotics` - -3. **Read Documentation** - - Comprehensive API docs with examples - - All examples are tested and guaranteed to work - - Safety explanations for all unsafe code - -### For Developers - -1. **Maintain Quality Standards** - - Run `cargo clippy` before committing - - Add tests for new features - - Document all public APIs - - Explain all unsafe code - -2. **Follow Established Patterns** - - Use array literals instead of `vec![]` for fixed sizes - - Document unsafe blocks with safety invariants - - Include examples in API documentation - - Maintain 100% test pass rate - -3. **Consider Future Enhancements** - - Property-based testing with proptest - - Interactive performance visualization - - AVX-512 support (16-way parallelism) - - GPU acceleration (CUDA/WebGPU) - - Multi-threaded batch processing - ---- - -## Next Steps - -### Immediate Actions -1. ✅ **Create v1.0.0 release tag** - Ready to execute -2. ✅ **Publish to crates.io** - Ready to publish -3. ✅ **Announce release** - Documentation complete -4. ✅ **Monitor for issues** - Testing infrastructure ready - -### Future Enhancements (Post-v1.0) -- Property-based testing -- Interactive visualizations -- GPU acceleration -- Multi-threading -- Higher dimensions - ---- - -## Lessons Learned - -### From Round 10 - -1. **Code Quality Maintenance** - - Zero warnings achievable with systematic approach - - Automated enforcement prevents regression - - Consistent reviews maintain quality - -2. **Documentation Excellence** - - Comprehensive docs reduce support burden - - Examples serve as both docs and tests - - Safety explanations critical for unsafe code - -3. **Example-Driven Validation** - - Real-world examples validate API usability - - Different domains expose missing features - - Examples serve as tutorial content - -4. **Production Readiness** - - Zero technical debt essential for v1.0 - - Complete test suite prevents regressions - - Documentation enables easy adoption - -### From All 10 Rounds - -1. **Iterative Improvement Works** - - Round 8: 44 → 23 warnings (48% reduction) - - Round 9: 23 → 0 warnings (100% elimination) - - Round 10: 0 → 0 warnings (maintained) - -2. **Quality Compounds** - - Each round built on previous work - - Consistent progress paid off - - Final result exceeds initial targets - -3. **Documentation Matters** - - Started with partial docs - - Ended with 100% coverage - - Examples validate design - -4. **Testing is Essential** - - Started with 27 tests - - Ended with 82 tests - - 100% pass rate maintained - ---- - -## Conclusion - -**Round 10 has been successfully completed**, marking the end of the 10-round MVP polishing process. The constraint-theory-core crate is now **production-ready** for v1.0.0 release. - -### Final Achievement Score - -``` -✅ ZERO clippy warnings (100% compliance) -✅ 100% test pass rate (82 tests) -✅ 100% documentation coverage -✅ All examples verified working -✅ All unsafe blocks documented -✅ Zero technical debt -✅ Professional code quality -✅ Production-ready status -``` - -### Impact - -This release provides: -- **Production-quality** geometric constraint engine -- **Zero-dependency** Rust implementation -- **Comprehensive documentation** with examples -- **Verified performance** characteristics -- **Safe APIs** with documented invariants - -### Status - -**PRODUCTION READY** for v1.0.0 release - ---- - -**Generated:** March 18, 2026 -**Round:** 10 of 10 (FINAL) -**Overall Status:** **PRODUCTION READY** -**Next Milestone:** v1.0.0 Release - ---- - -## Acknowledgments - -### Research Foundation -Based on rigorous mathematical research in: -- Differential geometry -- Topological constraint theory -- Discrete geometric mechanics -- Computational topology - -### Community Support -- SuperInstance team -- Cellular agent infrastructure community -- Open source contributors - -### Tools Used -- Rust programming language -- Cargo build system -- Clippy linter -- GitHub for version control - ---- - -**End of Round 10 - Final Report** -**Status:** COMPLETE ✅ -**Quality:** PRODUCTION READY -**Next:** v1.0.0 Release diff --git a/crates/ROUND_8_COMPLETION_SUMMARY.md b/crates/ROUND_8_COMPLETION_SUMMARY.md deleted file mode 100644 index a1fafcf..0000000 --- a/crates/ROUND_8_COMPLETION_SUMMARY.md +++ /dev/null @@ -1,302 +0,0 @@ -# ConstraintTheory MVP - Round 8 Completion Summary - -**Repository:** https://github.com/SuperInstance/Constraint-Theory -**Component:** constraint-theory-core -**Date:** 2026-03-18 -**Round:** 8 of 10 -**Status:** ✅ Complete - ---- - -## Executive Summary - -Round 8 successfully polished the ConstraintTheory MVP with significant improvements in code quality, performance analysis, and documentation. The round revealed important architectural insights about the effectiveness of KD-tree optimization versus SIMD micro-optimizations. - -### Key Achievements - -✅ **Code Quality:** 48% reduction in clippy warnings (44 → 23) -✅ **Performance Analysis:** Comprehensive benchmarking with counterintuitive results -✅ **Documentation:** 3 new documents (performance report, tutorial, changelog) -✅ **Test Suite:** 68 tests passing in 0.45s (100% pass rate) -✅ **Git Commit:** All changes committed and pushed to main - ---- - -## Detailed Accomplishments - -### 1. Code Quality Improvements - -#### Clippy Warning Fixes -- **Before:** 44 warnings -- **After:** 23 warnings -- **Reduction:** 48% (21 warnings fixed) - -#### Specific Fixes -1. **Renamed ambiguous method** (`curvature.rs`) - - Changed `RicciFlow::default()` to `with_defaults()` - - Avoids confusion with `std::default::Default` trait - -2. **Fixed recursion parameters** (`kdtree.rs`) - - Prefixed `depth` with underscore: `_depth` - - Clarifies recursion-only usage - -3. **Improved assignment patterns** (`manifold.rs`) - - Changed `a = a - b` to `a -= b` - - More idiomatic Rust - -4. **Enhanced safety documentation** (`simd.rs`) - - Added comprehensive `# Safety` section - - Documented CPU requirements and guarantees - -5. **Added struct documentation** (`percolation.rs`, `tile.rs`) - - Documented `RigidityResult` and all fields - - Documented `FastPercolation` and methods - - Added `Default` trait for `ConstraintBlock` - -6. **Fixed Cargo.toml** - - Removed deprecated `target-cpu = "native"` - -### 2. Performance Analysis - -#### Benchmark Configuration -- **Manifold:** Density 200 (40,384 states) -- **Test vectors:** 100,000 -- **Iterations:** 5 -- **Platform:** Windows x86_64 with AVX2 - -#### Results -| Implementation | Time | Per-Tile | Throughput | -|----------------|------|----------|------------| -| **Scalar** | 8.37 ms | 83.67 ns | 11.9M/sec | -| **SIMD** | 487.54 ms | 4875.38 ns | 205K/sec | - -#### Key Finding -**Scalar is 58x faster than SIMD** for typical use cases. - -**Why?** -1. KD-tree provides O(log N) lookup, already extremely fast -2. SIMD overhead (setup, horizontal reductions) outweighs benefits -3. Poor cache locality for SIMD during tree traversal -4. Single-vector operations don't benefit from 8-way parallelism - -**Recommendation:** -- Use scalar for single vectors and small batches (< 1000) -- Use SIMD only for large batches (> 1000 vectors) -- KD-tree optimization is more effective than SIMD micro-optimizations - -### 3. Documentation Enhancements - -#### New Documents Created - -1. **PERFORMANCE_REPORT_ROUND_8.md** (500+ lines) - - Comprehensive benchmark analysis - - Performance characteristics documentation - - Optimization recommendations - - Success criteria evaluation - -2. **TUTORIAL_ROUND_8.md** (600+ lines) - - 10+ code examples - - Quick start guide - - Core concepts explanation - - Best practices - - Troubleshooting guide - -3. **CHANGELOG.md** - - Version history - - Semantic versioning compliance - - Future roadmap - -#### Enhanced Documentation -- Added detailed parameter descriptions to all major functions -- Documented return values and error conditions -- Added safety guarantees for unsafe code -- Included performance characteristics in API docs - -### 4. Test Suite Status - -#### Test Coverage -- **Total tests:** 68 unit tests + 3 doc tests = 71 total -- **Pass rate:** 100% -- **Execution time:** 0.45s (unit) + 0.40s (doc) = 0.85s total -- **Average per test:** ~6ms - -#### Test Categories -- Edge case tests: 43 (comprehensive boundary testing) -- KD-tree tests: 7 (spatial indexing) -- Manifold tests: 10 (Pythagorean snapping) -- Curvature tests: 3 (Ricci flow) -- Cohomology tests: 2 (topological invariants) -- Percolation tests: 1 (rigidity analysis) -- SIMD tests: 2 (vectorization verification) - ---- - -## Files Modified - -### Source Code Changes -1. `src/curvature.rs` - Renamed default() to with_defaults() -2. `src/kdtree.rs` - Prefixed recursion parameters -3. `src/manifold.rs` - Fixed assignment patterns, added docs -4. `src/percolation.rs` - Added comprehensive documentation -5. `src/simd.rs` - Added safety documentation -6. `src/tile.rs` - Added Default trait implementation -7. `Cargo.toml` - Removed deprecated key - -### New Documentation -1. `PERFORMANCE_REPORT_ROUND_8.md` - Performance analysis -2. `TUTORIAL_ROUND_8.md` - Comprehensive tutorial -3. `CHANGELOG.md` - Version history - ---- - -## Performance Characteristics - -### Time Complexity -| Operation | Complexity | Notes | -|-----------|-----------|-------| -| Single snap | O(log N) | KD-tree lookup | -| Batch snap (scalar) | O(M log N) | M vectors | -| Batch snap (SIMD) | O(M log N / 8) | Theoretical | -| KD-tree build | O(N log N) | One-time cost | - -### Space Complexity -| Structure | Space | Notes | -|-----------|-------|-------| -| Manifold (200) | ~1.25 MB | 40K states | -| KD-tree | O(N) | Tree structure | -| Batch buffer | O(M) | User-provided | - ---- - -## Remaining Work (Rounds 9-10) - -### Round 9 (Planned) -- [ ] Complete remaining documentation (23 warnings) -- [ ] Implement batch KD-tree queries -- [ ] Add cache alignment to data structures -- [ ] Create performance comparison charts - -### Round 10 (Planned) -- [ ] Property-based testing -- [ ] Expanded edge case coverage -- [ ] Interactive performance visualization -- [ ] Additional benchmark scenarios - ---- - -## Success Metrics - -### Round 8 Goals vs Achievements - -| Goal | Target | Achieved | Status | -|------|--------|----------|--------| -| Test execution time | < 1s | 0.45s | ✅ Exceeded | -| Clippy warnings | < 30 | 23 | ✅ Exceeded | -| Documentation | Comprehensive | 3 new docs | ✅ Complete | -| Performance analysis | Detailed | Full report | ✅ Complete | -| Code quality | High | 48% improvement | ✅ Exceeded | - ---- - -## Technical Insights - -### Key Learnings - -1. **Algorithmic Optimization > Micro-optimization** - - KD-tree (O(N) → O(log N)) provides 100x+ speedup - - SIMD provides 0.02x speedup (actually slower!) - - Lesson: Optimize algorithms first, then micro-optimize - -2. **Benchmark Before Optimizing** - - Intuition (SIMD faster) was wrong - - Actual measurement revealed scalar is 58x faster - - Lesson: Always measure on real workloads - -3. **Context Matters** - - SIMD great for dense linear algebra - - SIMD poor for sparse/tree traversal - - Lesson: Match optimization to data structure - -4. **Documentation Quality** - - Good docs prevent misuse - - Safety docs crucial for unsafe code - - Examples improve adoption - ---- - -## Recommendations for Users - -1. **Use scalar implementation** for typical use cases - - Single-vector snapping: `manifold.snap(vector)` - - Small batches: `manifold.snap_batch()` - - Better performance than SIMD for < 100 vectors - -2. **Use SIMD** only for large batches - - Large batch processing: `manifold.snap_batch_simd()` - - Only beneficial for > 1000 vectors - - Always benchmark to verify - -3. **Choose manifold density carefully** - - Density 50: Good for most apps (~1K states) - - Density 200: High precision (~40K states) - - Density 500+: Only if needed (diminishing returns) - ---- - -## Recommendations for Developers - -1. **Focus on scalar optimization** - - KD-tree already very effective - - Further scalar optimizations benefit both paths - - Consider cache-friendly data layouts - -2. **Rethink SIMD strategy** - - Current approach has too much overhead - - Need batch KD-tree queries for SIMD to shine - - Or focus on vectorizing internal operations only - -3. **Profile before optimizing** - - Benchmark showed counterintuitive result - - Always measure on real workloads - - Different use cases need different strategies - ---- - -## Git Information - -### Commit Details -- **Hash:** 096f2aa -- **Branch:** main -- **Files changed:** 22 -- **Insertions:** 1,336 -- **Deletions:** 90 - -### Files Added -- `crates/constraint-theory-core/CHANGELOG.md` -- `crates/constraint-theory-core/PERFORMANCE_REPORT_ROUND_8.md` -- `crates/constraint-theory-core/TUTORIAL_ROUND_8.md` - -### Push Status -✅ Successfully pushed to `origin/main` - ---- - -## Conclusion - -Round 8 successfully achieved all goals: - -✅ **Code quality improved** - 48% reduction in warnings -✅ **Performance analyzed** - Comprehensive benchmarking completed -✅ **Documentation enhanced** - 3 new documents with examples -✅ **Tests passing** - 100% pass rate maintained -✅ **Changes committed** - All work pushed to GitHub - -The key insight—that KD-tree optimization is so effective that SIMD provides no benefit for typical use cases—validates the architectural decision to prioritize algorithmic optimization over micro-optimizations. - -**Status:** Round 8 complete, ready for Round 9 - ---- - -**Generated:** 2026-03-18 -**Next Review:** Round 9 completion -**Round:** 8 of 10 diff --git a/crates/ROUND_9_COMPLETION_SUMMARY.md b/crates/ROUND_9_COMPLETION_SUMMARY.md deleted file mode 100644 index 8134b71..0000000 --- a/crates/ROUND_9_COMPLETION_SUMMARY.md +++ /dev/null @@ -1,360 +0,0 @@ -# ConstraintTheory MVP - Round 9 Completion Summary - -**Repository:** https://github.com/SuperInstance/Constraint-Theory -**Component:** constraint-theory-core -**Date:** 2026-03-18 -**Round:** 9 of 10 -**Status:** ✅ Complete - EXCEEDED TARGETS - ---- - -## Executive Summary - -Round 9 successfully achieved **100% clippy compliance** with ZERO warnings, significantly exceeding the target. This round also delivered comprehensive documentation enhancements and three new real-world example programs demonstrating practical applications of the constraint theory system. - -### Key Achievements - -✅ **ZERO Clippy Warnings** - Complete elimination of all 37 warnings (100% success) -✅ **Comprehensive Documentation** - All public APIs now fully documented with examples -✅ **Three New Examples** - ML integration, visualization, and robotics demonstrations -✅ **100% Test Pass Rate** - All 68 tests + 3 doc tests passing -✅ **Production Ready** - Code quality meets professional standards - ---- - -## Detailed Accomplishments - -### 1. Code Quality Excellence - -#### Clippy Warning Elimination -- **Before:** 37 warnings -- **After:** 0 warnings -- **Reduction:** 100% (all warnings eliminated) -- **Status:** TARGET EXCEEDED - -#### Specific Fixes - -1. **Missing Documentation** (23 warnings fixed) - - Added comprehensive docs for `CohomologyResult` struct and all fields - - Documented `FastCohomology::compute()` with parameters, returns, and examples - - Documented `RicciFlow::new()`, `with_defaults()`, and `evolve()` - - Documented `ricci_flow_step()` function - - Documented `GaugeConnection` and `parallel_transport()` - - Documented `PythagoreanTriple` struct and all methods - - Documented `PythagoreanManifold::new()` and `state_count()` - -2. **Code Style Improvements** (7 warnings fixed) - - Fixed `needless_range_loop` in simd.rs (line 79) - - Replaced `for state_idx in 0..state_count` with `for (state_idx, state) in ...enumerate().take()` - - Renamed `edge_case_tests` module to `tests` to avoid naming conflict - - Fixed manual range contains with idiomatic `(-0.001..=1.001).contains(&noise)` - - Fixed `Clone` on `Copy` type (changed `.clone()` to direct copy) - -3. **Unused Code Cleanup** (7 warnings fixed) - - Removed unused `snap` import in edge_case_tests.rs - - Prefixed unused variables with underscore: `_snapped`, `_total_noise` - - Fixed `BenchmarkResult` struct to remove dead fields (`total_time`, `iterations`) - - Removed unused `Duration` import in bench_comparison.rs - -### 2. Documentation Enhancements - -#### API Documentation Coverage -- **100%** of public structs documented -- **100%** of public methods documented -- **100%** include usage examples -- **100%** include parameter descriptions -- **100%** include return value specifications - -#### Documentation Quality -Each documented item includes: -- Clear description of purpose -- Detailed parameter explanations -- Return value specifications -- Usage examples (compilable and tested) -- Error conditions where applicable -- Cross-references to related items - -#### Examples Created - -**1. ML Integration Example** (`examples/ml_integration.rs`) -- Embedding normalization for neural networks -- Feature discretization for ML pipelines -- Batch processing for inference optimization -- Feature bucketing for quantization -- Dimensionality reduction validation - -**2. Visualization Example** (`examples/visualization.rs`) -- Grid snapping for UI layout -- Procedural generation of directions -- Tile rendering with constraints -- Rigidity analysis for structures -- Symmetry detection algorithms -- Color quantization (RGB to 2D) - -**3. Robotics Example** (`examples/robotics.rs`) -- Motion direction discretization -- Path planning through waypoints -- Terrain analysis using Ricci flow -- Obstacle avoidance algorithms -- Sensor fusion techniques -- Parallel transport on manifolds - -### 3. Testing Verification - -#### Test Suite Status -- **Total tests:** 68 unit tests + 3 doc tests = 71 total -- **Pass rate:** 100% -- **Execution time:** ~0.5s (unit) + ~1.2s (doc) = 1.7s total -- **Coverage:** All major code paths exercised - -#### Test Categories -- Edge case tests: 43 (comprehensive boundary testing) -- KD-tree tests: 7 (spatial indexing) -- Manifold tests: 10 (Pythagorean snapping) -- Curvature tests: 3 (Ricci flow) -- Cohomology tests: 2 (topological invariants) -- Percolation tests: 1 (rigidity analysis) -- SIMD tests: 2 (vectorization verification) -- Doc tests: 3 (API examples) - ---- - -## Files Modified - -### Source Code Changes - -**Documentation Additions:** -1. `src/cohomology.rs` - Added comprehensive struct and method documentation -2. `src/curvature.rs` - Added detailed RicciFlow and ricci_flow_step documentation -3. `src/gauge.rs` - Added GaugeConnection and parallel_transport documentation -4. `src/manifold.rs` - Added PythagoreanTriple and PythagoreanManifold documentation - -**Code Quality Improvements:** -5. `src/simd.rs` - Fixed needless_range_loop warning -6. `src/edge_case_tests.rs` - Renamed module, fixed unused variables, improved range checks -7. `examples/bench_profiled.rs` - Fixed unused variable warning -8. `examples/bench_comparison.rs` - Fixed unused import and struct fields - -### New Files Created - -**Example Programs:** -1. `examples/ml_integration.rs` - Machine learning integration examples (210+ lines) -2. `examples/visualization.rs` - Geometric visualization examples (220+ lines) -3. `examples/robotics.rs` - Robotics and motion planning examples (280+ lines) - -**Documentation:** -4. `ROUND_9_COMPLETION_SUMMARY.md` - This document -5. `CHANGELOG.md` - Updated with Round 9 changes - ---- - -## Performance Characteristics - -### Time Complexity -| Operation | Complexity | Notes | -|-----------|-----------|-------| -| Single snap | O(log N) | KD-tree lookup | -| Batch snap (scalar) | O(M log N) | M vectors | -| Batch snap (SIMD) | O(M log N / 8) | Theoretical, with overhead | -| KD-tree build | O(N log N) | One-time cost | -| Nearest-k search | O(k log N) | For k neighbors | - -### Space Complexity -| Structure | Space | Notes | -|-----------|-------|-------| -| Manifold (density=200) | ~40K states | 2 floats each = 320KB | -| KD-tree | O(N) | Additional tree structure | -| Batch buffer | O(M) | User-provided | - -### Performance Metrics (from Round 8) -- **Scalar:** 83.67 ns/tile (11.9M tiles/sec) -- **SIMD:** 4875.38 ns/tile (205K tiles/sec) -- **Finding:** Scalar is 58x faster for typical use cases - ---- - -## Code Quality Metrics - -### Round 9 Goals vs Achievements - -| Goal | Target | Achieved | Status | -|------|--------|----------|--------| -| Clippy warnings | < 10 | **0** | ✅ **EXCEEDED** | -| Test execution time | < 1s | 0.5s | ✅ Exceeded | -| Documentation coverage | > 90% | **100%** | ✅ **EXCEEDED** | -| API examples | All public | **100%** | ✅ **EXCEEDED** | -| Real-world examples | 2+ | **3** | ✅ Exceeded | -| Code quality | High | **Professional** | ✅ Exceeded | - -### Documentation Quality -- ✅ All public structs documented -- ✅ All public methods documented -- ✅ All documentation includes examples -- ✅ All examples compile and run -- ✅ Parameter descriptions detailed -- ✅ Return values specified -- ✅ Error conditions documented - ---- - -## Technical Insights - -### Key Learnings - -1. **Documentation-First Development** - - Writing documentation first clarifies API design - - Examples serve as both docs and tests - - Comprehensive docs reduce support burden - -2. **Clippy as Quality Gate** - - Zero warnings achievable with systematic approach - - Each warning fixed improves code quality - - Automated enforcement prevents regression - -3. **Example-Driven Design** - - Real-world examples validate API usability - - Different domains expose missing features - - Examples serve as tutorial content - -4. **Iterative Improvement** - - Round 8: 44 → 23 warnings (48% reduction) - - Round 9: 37 → 0 warnings (100% elimination) - - Consistent progress pays off - ---- - -## Recommendations for Users - -1. **Use the Examples** - - Run `cargo run --release --example ml_integration` for ML workflows - - Run `cargo run --release --example visualization` for graphics - - Run `cargo run --release --example robotics` for motion planning - -2. **Read the API Docs** - - All public APIs fully documented with examples - - Use `cargo doc --open` to browse documentation - - Examples are tested and guaranteed to work - -3. **Trust the Quality** - - Zero clippy warnings = professional code quality - - 100% test coverage = reliable behavior - - Comprehensive docs = easy integration - ---- - -## Recommendations for Developers - -1. **Maintain Zero Warnings** - - Run `cargo clippy --all-targets -- -W clippy::all` before committing - - Treat warnings as bugs - - Use CI to enforce clippy checks - -2. **Keep Documentation Updated** - - Document new APIs immediately - - Include examples with all public functions - - Update docs when changing behavior - -3. **Add Examples for Features** - - Create examples for new use cases - - Test examples in CI - - Reference examples in API docs - -4. **Continue Test Coverage** - - Add tests for new features - - Maintain 100% pass rate - - Use doc tests for API examples - ---- - -## Git Information - -### Files Changed -- **Modified:** 8 source files -- **Added:** 5 new files -- **Total changes:** ~1,500 lines added, ~100 lines removed - -### Test Results -``` -test result: ok. 68 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out -Doc test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out -``` - -### Clippy Results -``` -cargo clippy --all-targets -- -W clippy::all -warning: 0 warnings emitted -``` - ---- - -## Comparison: Round 8 vs Round 9 - -| Metric | Round 8 | Round 9 | Improvement | -|--------|---------|---------|-------------| -| Clippy warnings | 23 | **0** | **100% reduction** | -| Documentation coverage | ~75% | **100%** | +25% | -| Real-world examples | 0 | **3** | +3 examples | -| API doc examples | ~50% | **100%** | +50% | -| Code quality | High | **Professional** | Significantly improved | - ---- - -## Success Criteria - -### Round 9 Goals vs Achievements - -| Goal | Target | Achieved | Status | -|------|--------|----------|--------| -| **Clippy warnings** | < 10 | **0** | ✅ **EXCEEDED** | -| **Documentation** | Comprehensive | **Complete** | ✅ **EXCEEDED** | -| **Examples** | 2+ | **3** | ✅ Exceeded | -| **Tests** | 100% pass | **100%** | ✅ Maintained | -| **Performance** | < 100ns/tile | **83.67ns** | ✅ Maintained | - ---- - -## Next Steps (Round 10) - -### Planned Enhancements - -1. **Property-Based Testing** - - Add proptest for randomized testing - - Test invariants across random inputs - - Improve edge case coverage - -2. **Interactive Visualization** - - Web-based performance dashboard - - Real-time benchmarking display - - Interactive manifold exploration - -3. **Additional Benchmarks** - - Memory usage profiling - - Cache miss analysis - - SIMD vs scalar comparison charts - -4. **Documentation Polish** - - Architecture decision records - - Performance tuning guide - - Troubleshooting section - ---- - -## Conclusion - -Round 9 has been **exceptionally successful**, achieving 100% clippy compliance and significantly exceeding all quality targets. The addition of three comprehensive real-world examples demonstrates the practical utility of the constraint theory system across multiple domains. - -**Key Achievements:** -- ✅ **ZERO clippy warnings** (100% elimination) -- ✅ **100% documentation coverage** with examples -- ✅ **Three new real-world examples** (ML, visualization, robotics) -- ✅ **100% test pass rate** maintained -- ✅ **Professional code quality** achieved - -**Status:** Round 9 complete, ready for Round 10 - Final Polish and Advanced Features - ---- - -**Generated:** 2026-03-18 -**Next Review:** Round 10 completion -**Round:** 9 of 10 -**Overall Status:** **EXCEPTIONAL** - All targets exceeded diff --git a/crates/TUTORIAL_ROUND_8.md b/crates/TUTORIAL_ROUND_8.md deleted file mode 100644 index 9bac78c..0000000 --- a/crates/TUTORIAL_ROUND_8.md +++ /dev/null @@ -1,717 +0,0 @@ -# ConstraintTheory Core - Tutorial with Examples - -**Version:** 0.1.0 -**Date:** 2026-03-18 -**Round:** 8 - ---- - -## Table of Contents - -1. [Introduction](#introduction) -2. [Quick Start](#quick-start) -3. [Core Concepts](#core-concepts) -4. [Pythagorean Manifold](#pythagorean-manifold) -5. [KD-Tree Spatial Indexing](#kd-tree-spatial-indexing) -6. [Ricci Flow](#ricci-flow) -7. [Rigidity Percolation](#rigidity-percolation) -8. [Performance Optimization](#performance-optimization) -9. [Advanced Examples](#advanced-examples) -10. [Best Practices](#best-practices) - ---- - -## Introduction - -ConstraintTheory Core is a high-performance geometric constraint engine that provides: - -- **Pythagorean Snapping:** Map continuous vectors to discrete Pythagorean triples -- **Spatial Indexing:** O(log N) nearest neighbor queries via KD-tree -- **Curvature Flow:** Ricci flow for geometric evolution -- **Rigidity Analysis:** Laman's theorem for structural rigidity - -### Key Features - -- **Zero Dependencies:** No external runtime dependencies -- **Fast:** O(log N) spatial queries, SIMD-optimized batch operations -- **Safe:** Rust memory safety with comprehensive testing -- **Well-Documented:** Extensive API documentation and examples - ---- - -## Quick Start - -### Installation - -Add to your `Cargo.toml`: - -```toml -[dependencies] -constraint-theory-core = "0.1.0" -``` - -### Basic Usage - -```rust -use constraint_theory_core::{PythagoreanManifold, snap}; - -fn main() { - // Create a Pythagorean manifold with 200 density - let manifold = PythagoreanManifold::new(200); - - // Snap a continuous vector to nearest Pythagorean triple - let vector = [0.6, 0.8]; // Close to (3, 4, 5) triple - let (snapped, noise) = manifold.snap(vector); - - println!("Original: {:?}", vector); - println!("Snapped: {:?}", snapped); - println!("Noise: {:.4}", noise); -} -``` - -**Output:** -``` -Original: [0.6, 0.8] -Snapped: [0.6, 0.8] -Noise: 0.0000 -``` - ---- - -## Core Concepts - -### Pythagorean Triples - -A Pythagorean triple (a, b, c) satisfies: a² + b² = c² - -**Examples:** -- (3, 4, 5) → normalized: (0.6, 0.8) -- (5, 12, 13) → normalized: (0.3846, 0.9231) -- (8, 15, 17) → normalized: (0.4706, 0.8824) - -### Manifold Density - -The density parameter controls how many Pythagorean triples are generated: - -| Density | States | Memory | Precision | -|---------|--------|--------|-----------| -| 10 | ~100 | ~3 KB | Low | -| 50 | ~1,200 | ~38 KB | Medium | -| 200 | ~40,000 | ~1.25 MB | High | -| 500 | ~100,000 | ~3.1 MB | Very High | - -**Recommendation:** Start with density 50-200 for most applications. - -### Noise and Resonance - -- **Resonance:** Dot product between input and snapped vector (0 to 1) -- **Noise:** 1 - resonance (0 = perfect match, 1 = orthogonal) - -```rust -let vector = [0.6, 0.8]; -let (snapped, noise) = manifold.snap(vector); - -// High resonance (close to 1.0) = low noise -assert!(noise < 0.01); - -let random = [0.123, 0.456]; -let (snapped2, noise2) = manifold.snap(random); - -// Lower resonance = higher noise -assert!(noise2 > 0.1); -``` - ---- - -## Pythagorean Manifold - -### Creating a Manifold - -```rust -use constraint_theory_core::PythagoreanManifold; - -// Low density (fast, less precise) -let low_density = PythagoreanManifold::new(10); - -// Medium density (balanced) -let medium_density = PythagoreanManifold::new(50); - -// High density (precise, slower) -let high_density = PythagoreanManifold::new(200); -``` - -### Single Vector Snapping - -```rust -let manifold = PythagoreanManifold::new(100); - -// Snap a vector -let vector = [0.707, 0.707]; // Close to 45 degrees -let (snapped, noise) = manifold.snap(vector); - -println!("Input: {:?}", vector); -println!("Snapped: {:?}", snapped); -println!("Noise: {:.4}", noise); -``` - -### Batch Processing (Scalar) - -```rust -let manifold = PythagoreanManifold::new(100); - -// Generate test vectors -let vectors: Vec<[f32; 2]> = vec![ - [0.6, 0.8], - [0.707, 0.707], - [1.0, 0.0], - [0.0, 1.0], -]; - -// Pre-allocate results buffer -let mut results = vec![([0.0, 0.0], 0.0); vectors.len()]; - -// Snap all vectors (scalar implementation) -manifold.snap_batch(&vectors, &mut results); - -for (i, (input, (snapped, noise))) in vectors.iter().zip(results.iter()).enumerate() { - println!("{}: {:?} -> {:?} (noise: {:.4})", i, input, snapped, noise); -} -``` - -### Batch Processing (SIMD) - -**Warning:** SIMD is only faster for large batches (> 1000 vectors). Use scalar for typical use cases. - -```rust -let manifold = PythagoreanManifold::new(200); - -// Large batch (SIMD beneficial) -let large_batch: Vec<[f32; 2]> = (0..10_000) - .map(|i| { - let angle = (i as f32) * 0.0001; - [angle.sin(), angle.cos()] - }) - .collect(); - -let mut results = vec![([0.0, 0.0], 0.0); large_batch.len()]; - -// SIMD implementation (only for large batches) -manifold.snap_batch_simd_into(&large_batch, &mut results); -``` - ---- - -## KD-Tree Spatial Indexing - -### Understanding the KD-tree - -The KD-tree provides O(log N) nearest neighbor lookup, which is crucial for performance: - -| Operation | Without KD-tree | With KD-tree | -|-----------|----------------|--------------| -| Single snap | O(N) | O(log N) | -| 1000 snaps | O(1000N) | O(1000 log N) | -| 100K states | 100K operations | ~17 operations | - -### Using the KD-tree Directly - -```rust -use constraint_theory_core::kdtree::KDTree; - -// Create some 2D points -let points = vec![ - [0.0, 0.0], - [1.0, 0.0], - [0.0, 1.0], - [1.0, 1.0], -]; - -// Build KD-tree -let kdtree = KDTree::build(&points); - -// Find nearest neighbor -let query = [0.3, 0.4]; -if let Some((nearest, idx, dist_sq)) = kdtree.nearest(&query) { - println!("Nearest: {:?} at index {} (distance²: {:.4})", - nearest, idx, dist_sq); -} - -// Find k-nearest neighbors -let k_neighbors = kdtree.nearest_k(&query, 2); -for (i, (point, idx, dist_sq)) in k_neighbors.iter().enumerate() { - println!("Neighbor {}: {:?} at {} (distance²: {:.4})", - i + 1, point, idx, dist_sq); -} -``` - -### Performance Comparison - -```rust -use std::time::Instant; -use constraint_theory_core::PythagoreanManifold; - -let manifold = PythagoreanManifold::new(500); // ~100K states -let test_vectors: Vec<[f32; 2]> = (0..1000) - .map(|i| { - let angle = (i as f32) * 0.001; - [angle.sin(), angle.cos()] - }) - .collect(); - -// Time single-vector snaps -let start = Instant::now(); -for vec in &test_vectors { - let _ = manifold.snap(*vec); -} -let single_time = start.elapsed(); - -println!("1000 single-vector snaps: {:?}", single_time); -println!("Average per snap: {:.2} µs", - single_time.as_micros() as f32 / 1000.0); -``` - ---- - -## Ricci Flow - -### What is Ricci Flow? - -Ricci flow is a geometric evolution equation that smooths curvature over time. It's used in: - -- **Riemannian geometry:** Metric evolution -- **Geometric analysis:** Proof of Poincaré conjecture -- **Computer graphics:** Mesh smoothing -- **Manifold learning:** Dimensionality reduction - -### Basic Usage - -```rust -use constraint_theory_core::curvature::{RicciFlow, ricci_flow_step}; - -// Create Ricci flow with alpha=0.1, targeting zero curvature -let mut rf = RicciFlow::new(0.1, 0.0); - -// Initial curvatures -let mut curvatures = vec![1.0, 0.5, -0.5, 0.0, 0.8]; - -// Evolve for 10 steps -rf.evolve(&mut curvatures, 10); - -println!("Evolved curvatures: {:?}", curvatures); -// All values should be closer to 0.0 now -``` - -### Single Step Evolution - -```rust -use constraint_theory_core::curvature::ricci_flow_step; - -let curvature = 1.0; -let alpha = 0.1; -let target = 0.0; - -let new_curvature = ricci_flow_step(curvature, alpha, target); - -println!("Original: {:.4}", curvature); -println!("New: {:.4}", new_curvature); -// new_curvature = 1.0 + 0.1 * (0.0 - 1.0) = 0.9 -``` - -### Convergence Example - -```rust -use constraint_theory_core::curvature::RicciFlow; - -let mut rf = RicciFlow::new(0.1, 0.0); -let mut curvature = 2.0; - -println!("Step 0: {:.6}", curvature); -for step in 1..=20 { - rf.evolve(&mut [curvature], 1); - println!("Step {}: {:.6}", step, curvature); -} - -// Curvature should converge to 0.0 -``` - ---- - -## Rigidity Percolation - -### Laman's Theorem - -A graph with V vertices is minimally rigid if: -1. It has exactly 2V - 3 edges -2. Every subgraph with k vertices has at most 2k - 3 edges - -### Basic Usage - -```rust -use constraint_theory_core::percolation::{FastPercolation, RigidityResult}; - -// Create percolation structure for 5 nodes -let mut perc = FastPercolation::new(5); - -// Define edges -let edges = vec![ - (0, 1), - (1, 2), - (2, 3), - (3, 4), - (4, 0), // Close the loop -]; - -// Compute rigidity -let result = perc.compute_rigidity(&edges, 5); - -println!("Is rigid: {}", result.is_rigid); -println!("Rank: {}", result.rank); -println!("Deficiency: {}", result.deficiency); -println!("Clusters: {}", result.n_clusters); -println!("Rigid fraction: {:.2}", result.rigid_fraction); -``` - -### Rigid vs Non-Rigid Examples - -```rust -use constraint_theory_core::percolation::FastPercolation; - -// Triangle (rigid) -let mut triangle = FastPercolation::new(3); -let triangle_edges = vec![(0, 1), (1, 2), (2, 0)]; -let triangle_result = triangle.compute_rigidity(&triangle_edges, 3); -assert!(triangle_result.is_rigid); - -// Line (non-rigid) -let mut line = FastPercolation::new(3); -let line_edges = vec![(0, 1), (1, 2)]; -let line_result = line.compute_rigidity(&line_edges, 3); -assert!(!line_result.is_rigid); -``` - ---- - -## Performance Optimization - -### Choosing the Right Manifold Density - -```rust -use constraint_theory_core::PythagoreanManifold; -use std::time::Instant; - -fn benchmark_density(density: usize) { - let manifold = PythagoreanManifold::new(density); - let vectors: Vec<[f32; 2]> = (0..10_000) - .map(|i| { - let angle = (i as f32) * 0.0001; - [angle.sin(), angle.cos()] - }) - .collect(); - - let start = Instant::now(); - for vec in &vectors { - let _ = manifold.snap(*vec); - } - let elapsed = start.elapsed(); - - println!("Density {}: {} states, {:?} total, {:.2} µs/snap", - density, manifold.state_count(), elapsed, - elapsed.as_micros() as f32 / 10_000.0); -} - -// Benchmark different densities -benchmark_density(10); -benchmark_density(50); -benchmark_density(100); -benchmark_density(200); -benchmark_density(500); -``` - -### Scalar vs SIMD Decision Tree - -``` -┌─────────────────────────────────────┐ -│ How many vectors to process? │ -└──────────────┬──────────────────────┘ - │ - ┌──────┴──────┐ - │ │ - < 1000 >= 1000 - │ │ - ▼ ▼ - Use Scalar Use SIMD - (snap_batch) (snap_batch_simd) -``` - -### Memory-Efficient Batch Processing - -```rust -use constraint_theory_core::PythagoreanManifold; - -let manifold = PythagoreanManifold::new(100); - -// Process in chunks to avoid large allocations -let large_dataset: Vec<[f32; 2]> = /* ... */; -let chunk_size = 1000; - -for chunk in large_dataset.chunks(chunk_size) { - let mut results = vec![([0.0, 0.0], 0.0); chunk.len()]; - manifold.snap_batch(chunk, &mut results); - - // Process results... - for (snapped, noise) in results { - // Do something with snapped vector - } -} -``` - ---- - -## Advanced Examples - -### Custom Pythagorean Triple Generation - -```rust -use constraint_theory_core::manifold::PythagoreanTriple; - -// Generate custom triple -let triple = PythagoreanTriple::new(3.0, 4.0, 5.0); - -assert!(triple.is_valid()); - -// Convert to normalized vector -let vector = triple.to_vector(); -println!("Triple (3, 4, 5) -> vector {:?}", vector); -// Output: [0.6, 0.8] -``` - -### Noise Filtering - -```rust -use constraint_theory_core::PythagoreanManifold; - -let manifold = PythagoreanManifold::new(100); -let vectors: Vec<[f32; 2]> = vec![ - [0.6, 0.8], // Low noise - [0.123, 0.456], // High noise - [1.0, 0.0], // Zero noise (exact) -]; - -// Filter by noise threshold -let noise_threshold = 0.1; -let filtered: Vec<_> = vectors.iter() - .filter_map(|&vec| { - let (snapped, noise) = manifold.snap(vec); - if noise < noise_threshold { - Some((vec, snapped, noise)) - } else { - None - } - }) - .collect(); - -println!("Vectors with noise < {:.2}:", noise_threshold); -for (original, snapped, noise) in filtered { - println!(" {:?} -> {:?} (noise: {:.4})", - original, snapped, noise); -} -``` - -### Iterative Refinement - -```rust -use constraint_theory_core::PythagoreanManifold; - -let manifold = PythagoreanManifold::new(200); -let mut vector = [0.55, 0.75]; // Not exactly on a triple - -println!("Initial: {:?}", vector); - -// Iteratively snap to converge to exact triple -for iteration in 0..5 { - let (snapped, noise) = manifold.snap(vector); - println!(" {}: {:?} -> {:?} (noise: {:.6})", - iteration, vector, snapped, noise); - - vector = snapped; - - if noise < 1e-6 { - println!(" Converged!"); - break; - } -} -``` - ---- - -## Best Practices - -### 1. Choose Appropriate Density - -```rust -// ❌ Too low - poor precision -let too_low = PythagoreanManifold::new(5); - -// ✅ Good balance -let balanced = PythagoreanManifold::new(50); - -// ✅ High precision for critical applications -let high_precision = PythagoreanManifold::new(200); - -// ❌ Usually unnecessary - diminishing returns -let excessive = PythagoreanManifold::new(1000); -``` - -### 2. Reuse Manifold Instances - -```rust -// ❌ Creates new manifold each time (slow) -fn process_vector(vec: [f32; 2]) -> ([f32; 2], f32) { - let manifold = PythagoreanManifold::new(100); - manifold.snap(vec) -} - -// ✅ Reuse manifold (fast) -struct Processor { - manifold: PythagoreanManifold, -} - -impl Processor { - fn new() -> Self { - Self { - manifold: PythagoreanManifold::new(100), - } - } - - fn process(&self, vec: [f32; 2]) -> ([f32; 2], f32) { - self.manifold.snap(vec) - } -} -``` - -### 3. Use Scalar for Typical Workloads - -```rust -let manifold = PythagoreanManifold::new(100); -let vectors: Vec<[f32; 2]> = /* ... */; - -// ❌ SIMD for small batch (slower) -if vectors.len() < 100 { - let mut results = vec![([0.0, 0.0], 0.0); vectors.len()]; - manifold.snap_batch_simd_into(&vectors, &mut results); -} - -// ✅ Scalar for small batch (faster) -if vectors.len() < 100 { - let mut results = vec![([0.0, 0.0], 0.0); vectors.len()]; - manifold.snap_batch(&vectors, &mut results); -} - -// ✅ SIMD only for large batches -if vectors.len() >= 1000 { - let mut results = vec![([0.0, 0.0], 0.0); vectors.len()]; - manifold.snap_batch_simd_into(&vectors, &mut results); -} -``` - -### 4. Pre-Allocate Result Buffers - -```rust -// ❌ Allocates on each call -for vec in &vectors { - let mut results = vec![([0.0, 0.0], 0.0); 1]; - manifold.snap_batch(&[*vec], &mut results); -} - -// ✅ Allocate once, reuse -let mut results = vec![([0.0, 0.0], 0.0); vectors.len()]; -manifold.snap_batch(&vectors, &mut results); -``` - -### 5. Handle Edge Cases - -```rust -use constraint_theory_core::PythagoreanManifold; - -let manifold = PythagoreanManifold::new(100); - -// Handle zero vector -let zero = [0.0, 0.0]; -let (snapped, noise) = manifold.snap(zero); -assert_eq!(snapped, [1.0, 0.0]); // Default fallback - -// Handle very small vectors -let tiny = [1e-20, 1e-20]; -let (snapped, noise) = manifold.snap(tiny); -// Should handle gracefully, not panic - -// Handle very large vectors -let huge = [1e20, 1e20]; -let (snapped, noise) = manifold.snap(huge); -// Should normalize and snap correctly -``` - ---- - -## Troubleshooting - -### Problem: SIMD is slower than scalar - -**Solution:** This is expected for small batches. Use scalar for < 1000 vectors. - -```rust -// Benchmark to confirm -let vectors: Vec<[f32; 2]> = /* ... */; - -if vectors.len() < 1000 { - // Use scalar - manifold.snap_batch(&vectors, &mut results); -} else { - // Try SIMD, but benchmark to verify it's faster - // SIMD has overhead that may not be worth it -} -``` - -### Problem: High noise values - -**Solution:** Increase manifold density for better precision. - -```rust -// Low precision -let low = PythagoreanManifold::new(10); -let (_, noise) = low.snap([0.123, 0.456]); -// noise might be 0.3 or higher - -// High precision -let high = PythagoreanManifold::new(200); -let (_, noise) = high.snap([0.123, 0.456]); -// noise should be lower -``` - -### Problem: Memory usage too high - -**Solution:** Process in chunks or reduce density. - -```rust -// Process large dataset in chunks -for chunk in large_dataset.chunks(1000) { - let mut results = vec![([0.0, 0.0], 0.0); chunk.len()]; - manifold.snap_batch(chunk, &mut results); - // Process results... -} -``` - ---- - -## Further Reading - -- **API Documentation:** `src/lib.rs` -- **Performance Guide:** `PERFORMANCE_ANALYSIS_SUMMARY.md` -- **Optimization Roadmap:** `OPTIMIZATION_ROADMAP.md` -- **Profiling Guide:** `PROFILING_GUIDE.md` - ---- - -**Last Updated:** 2026-03-18 -**Version:** 0.1.0 -**Round:** 8 diff --git a/crates/constraint-theory-core/Cargo.lock b/crates/constraint-theory-core/Cargo.lock deleted file mode 100644 index 11f9800..0000000 --- a/crates/constraint-theory-core/Cargo.lock +++ /dev/null @@ -1,133 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 4 - -[[package]] -name = "cfg-if" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" - -[[package]] -name = "constraint-theory-core" -version = "1.0.0" -dependencies = [ - "rand", -] - -[[package]] -name = "getrandom" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" -dependencies = [ - "cfg-if", - "libc", - "wasi", -] - -[[package]] -name = "libc" -version = "0.2.183" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d" - -[[package]] -name = "ppv-lite86" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" -dependencies = [ - "zerocopy", -] - -[[package]] -name = "proc-macro2" -version = "1.0.106" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quote" -version = "1.0.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha", - "rand_core", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom", -] - -[[package]] -name = "syn" -version = "2.0.117" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "unicode-ident" -version = "1.0.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" - -[[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - -[[package]] -name = "zerocopy" -version = "0.8.42" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2578b716f8a7a858b7f02d5bd870c14bf4ddbbcf3a4c05414ba6503640505e3" -dependencies = [ - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.8.42" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e6cc098ea4d3bd6246687de65af3f920c430e236bee1e3bf2e441463f08a02f" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] diff --git a/crates/constraint-theory-core/Cargo.toml b/crates/constraint-theory-core/Cargo.toml index 4a0a6c2..cdb3b06 100644 --- a/crates/constraint-theory-core/Cargo.toml +++ b/crates/constraint-theory-core/Cargo.toml @@ -1,13 +1,17 @@ [package] name = "constraint-theory-core" -version = "1.0.0" +version = "0.1.0" edition = "2021" -description = "High-performance constraint theory engine core" +rust-version = "1.75" +description = "Deterministic manifold snapping with O(log n) KD-tree indexing — maps continuous vectors to exact Pythagorean coordinates" authors = ["SuperInstance Team"] license = "MIT" repository = "https://github.com/SuperInstance/Constraint-Theory" documentation = "https://docs.rs/constraint-theory-core" homepage = "https://constraint-theory.superinstance.ai" +readme = "README.md" +keywords = ["geometry", "spatial-indexing", "kdtree", "pythagorean", "deterministic"] +categories = ["algorithms", "mathematics", "science"] exclude = [ "target/*", "examples/*", diff --git a/crates/constraint-theory-core/src/lib.rs b/crates/constraint-theory-core/src/lib.rs index ee67f06..6a88ea3 100644 --- a/crates/constraint-theory-core/src/lib.rs +++ b/crates/constraint-theory-core/src/lib.rs @@ -41,7 +41,7 @@ //! } //! ``` -#![warn(missing_docs)] +#![deny(missing_docs)] #![warn(unused_extern_crates)] pub mod cohomology; diff --git a/crates/constraint-theory-core/target/.rustc_info.json b/crates/constraint-theory-core/target/.rustc_info.json deleted file mode 100644 index 4e03427..0000000 --- a/crates/constraint-theory-core/target/.rustc_info.json +++ /dev/null @@ -1 +0,0 @@ -{"rustc_fingerprint":3382304531910817126,"outputs":{"17747080675513052775":{"success":true,"status":"","code":0,"stdout":"rustc 1.92.0 (ded5c06cf 2025-12-08)\nbinary: rustc\ncommit-hash: ded5c06cf21d2b93bffd5d884aa6e96934ee4234\ncommit-date: 2025-12-08\nhost: x86_64-pc-windows-msvc\nrelease: 1.92.0\nLLVM version: 21.1.3\n","stderr":""},"7971740275564407648":{"success":true,"status":"","code":0,"stdout":"___.exe\nlib___.rlib\n___.dll\n___.dll\n___.lib\n___.dll\nC:\\Users\\casey\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\npacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_abi=\"\"\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"msvc\"\ntarget_family=\"windows\"\ntarget_feature=\"cmpxchg16b\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_feature=\"sse3\"\ntarget_has_atomic=\"128\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"windows\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"pc\"\nwindows\n","stderr":""}},"successes":{}} \ No newline at end of file diff --git a/crates/constraint-theory-core/target/CACHEDIR.TAG b/crates/constraint-theory-core/target/CACHEDIR.TAG deleted file mode 100644 index 20d7c31..0000000 --- a/crates/constraint-theory-core/target/CACHEDIR.TAG +++ /dev/null @@ -1,3 +0,0 @@ -Signature: 8a477f597d28d172789f06886806bc55 -# This file is a cache directory tag created by cargo. -# For information about cache directory tags see https://bford.info/cachedir/ diff --git a/crates/constraint-theory-core/target/debug/.cargo-lock b/crates/constraint-theory-core/target/debug/.cargo-lock deleted file mode 100644 index e69de29..0000000 diff --git a/crates/constraint-theory-core/target/debug/.fingerprint/constraint-theory-core-6a59d354808d986e/invoked.timestamp b/crates/constraint-theory-core/target/debug/.fingerprint/constraint-theory-core-6a59d354808d986e/invoked.timestamp deleted file mode 100644 index e00328d..0000000 --- a/crates/constraint-theory-core/target/debug/.fingerprint/constraint-theory-core-6a59d354808d986e/invoked.timestamp +++ /dev/null @@ -1 +0,0 @@ -This file has an mtime of when this was started. \ No newline at end of file diff --git a/crates/constraint-theory-core/target/debug/.fingerprint/constraint-theory-core-6a59d354808d986e/output-test-lib-constraint_theory_core b/crates/constraint-theory-core/target/debug/.fingerprint/constraint-theory-core-6a59d354808d986e/output-test-lib-constraint_theory_core deleted file mode 100644 index ac3c826..0000000 --- a/crates/constraint-theory-core/target/debug/.fingerprint/constraint-theory-core-6a59d354808d986e/output-test-lib-constraint_theory_core +++ /dev/null @@ -1,8 +0,0 @@ -{"$message_type":"diagnostic","message":"unresolved import `rand`","code":{"code":"E0432","explanation":"An import was unresolved.\n\nErroneous code example:\n\n```compile_fail,E0432\nuse something::Foo; // error: unresolved import `something::Foo`.\n```\n\nIn Rust 2015, paths in `use` statements are relative to the crate root. To\nimport items relative to the current and parent modules, use the `self::` and\n`super::` prefixes, respectively.\n\nIn Rust 2018 or later, paths in `use` statements are relative to the current\nmodule unless they begin with the name of a crate or a literal `crate::`, in\nwhich case they start from the crate root. As in Rust 2015 code, the `self::`\nand `super::` prefixes refer to the current and parent modules respectively.\n\nAlso verify that you didn't misspell the import name and that the import exists\nin the module from where you tried to import it. Example:\n\n```\nuse self::something::Foo; // Ok.\n\nmod something {\n pub struct Foo;\n}\n# fn main() {}\n```\n\nIf you tried to use a module from an external crate and are using Rust 2015,\nyou may have missed the `extern crate` declaration (which is usually placed in\nthe crate root):\n\n```edition2015\nextern crate core; // Required to use the `core` crate in Rust 2015.\n\nuse core::any;\n# fn main() {}\n```\n\nSince Rust 2018 the `extern crate` declaration is not required and\nyou can instead just `use` it:\n\n```edition2018\nuse core::any; // No extern crate required in Rust 2018.\n# fn main() {}\n```\n"},"level":"error","spans":[{"file_name":"src\\kdtree.rs","byte_start":11713,"byte_end":11717,"line_start":390,"line_end":390,"column_start":13,"column_end":17,"is_primary":true,"text":[{"text":" use rand::Rng;","highlight_start":13,"highlight_end":17}],"label":"use of unresolved module or unlinked crate `rand`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `rand`, use `cargo add rand` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m\u001b[97m: unresolved import `rand`\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\kdtree.rs:390:13\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m390\u001b[0m \u001b[1m\u001b[96m|\u001b[0m use rand::Rng;\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `rand`\u001b[0m\n \u001b[1m\u001b[96m|\u001b[0m\n \u001b[1m\u001b[96m= \u001b[0m\u001b[1m\u001b[97mhelp\u001b[0m: if you wanted to use a crate named `rand`, use `cargo add rand` to add it to your `Cargo.toml`\n\n"} -{"$message_type":"diagnostic","message":"mismatched types","code":{"code":"E0308","explanation":"Expected type did not match the received type.\n\nErroneous code examples:\n\n```compile_fail,E0308\nfn plus_one(x: i32) -> i32 {\n x + 1\n}\n\nplus_one(\"Not a number\");\n// ^^^^^^^^^^^^^^ expected `i32`, found `&str`\n\nif \"Not a bool\" {\n// ^^^^^^^^^^^^ expected `bool`, found `&str`\n}\n\nlet x: f32 = \"Not a float\";\n// --- ^^^^^^^^^^^^^ expected `f32`, found `&str`\n// |\n// expected due to this\n```\n\nThis error occurs when an expression was used in a place where the compiler\nexpected an expression of a different type. It can occur in several cases, the\nmost common being when calling a function and passing an argument which has a\ndifferent type than the matching type in the function declaration.\n"},"level":"error","spans":[{"file_name":"src\\kdtree.rs","byte_start":7634,"byte_end":7645,"line_start":246,"line_end":246,"column_start":29,"column_end":40,"is_primary":true,"text":[{"text":" if let Some(&worst_dist) = results.worst_distance() {","highlight_start":29,"highlight_end":40}],"label":"expected `f32`, found `&_`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src\\kdtree.rs","byte_start":7649,"byte_end":7673,"line_start":246,"line_end":246,"column_start":44,"column_end":68,"is_primary":false,"text":[{"text":" if let Some(&worst_dist) = results.worst_distance() {","highlight_start":44,"highlight_end":68}],"label":"this expression has type `std::option::Option`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":" expected type `f32`\nfound reference `&_`","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"consider removing `&` from the pattern","code":null,"level":"help","spans":[{"file_name":"src\\kdtree.rs","byte_start":7634,"byte_end":7645,"line_start":246,"line_end":246,"column_start":29,"column_end":40,"is_primary":true,"text":[{"text":" if let Some(&worst_dist) = results.worst_distance() {","highlight_start":29,"highlight_end":40}],"label":null,"suggested_replacement":"worst_dist","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0308]\u001b[0m\u001b[1m\u001b[97m: mismatched types\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\kdtree.rs:246:29\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m246\u001b[0m \u001b[1m\u001b[96m|\u001b[0m if let Some(&worst_dist) = results.worst_distance() {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[96m------------------------\u001b[0m \u001b[1m\u001b[96mthis expression has type `std::option::Option`\u001b[0m\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[91m|\u001b[0m\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[91mexpected `f32`, found `&_`\u001b[0m\n \u001b[1m\u001b[96m|\u001b[0m\n \u001b[1m\u001b[96m= \u001b[0m\u001b[1m\u001b[97mnote\u001b[0m: expected type `\u001b[1m\u001b[35mf32\u001b[0m`\n found reference `\u001b[1m\u001b[35m&_\u001b[0m`\n\u001b[1m\u001b[96mhelp\u001b[0m: consider removing `&` from the pattern\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m246\u001b[0m \u001b[91m- \u001b[0m if let Some(\u001b[91m&worst_dist\u001b[0m) = results.worst_distance() {\n\u001b[1m\u001b[96m246\u001b[0m \u001b[92m+ \u001b[0m if let Some(\u001b[92mworst_dist\u001b[0m) = results.worst_distance() {\n \u001b[1m\u001b[96m|\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"failed to resolve: use of unresolved module or unlinked crate `rand`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"src\\kdtree.rs","byte_start":11747,"byte_end":11751,"line_start":392,"line_end":392,"column_start":23,"column_end":27,"is_primary":true,"text":[{"text":" let mut rng = rand::thread_rng();","highlight_start":23,"highlight_end":27}],"label":"use of unresolved module or unlinked crate `rand`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `rand`, use `cargo add rand` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m\u001b[97m: failed to resolve: use of unresolved module or unlinked crate `rand`\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\kdtree.rs:392:23\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m392\u001b[0m \u001b[1m\u001b[96m|\u001b[0m let mut rng = rand::thread_rng();\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `rand`\u001b[0m\n \u001b[1m\u001b[96m|\u001b[0m\n \u001b[1m\u001b[96m= \u001b[0m\u001b[1m\u001b[97mhelp\u001b[0m: if you wanted to use a crate named `rand`, use `cargo add rand` to add it to your `Cargo.toml`\n\n"} -{"$message_type":"diagnostic","message":"unused variable: `snapped`","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":4804,"byte_end":4811,"line_start":169,"line_end":169,"column_start":14,"column_end":21,"is_primary":true,"text":[{"text":" let (snapped, noise) = manifold.snap([0.6, 0.8]);","highlight_start":14,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"if this is intentional, prefix it with an underscore","code":null,"level":"help","spans":[{"file_name":"src\\manifold.rs","byte_start":4804,"byte_end":4811,"line_start":169,"line_end":169,"column_start":14,"column_end":21,"is_primary":true,"text":[{"text":" let (snapped, noise) = manifold.snap([0.6, 0.8]);","highlight_start":14,"highlight_end":21}],"label":null,"suggested_replacement":"_snapped","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: unused variable: `snapped`\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:169:14\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m169\u001b[0m \u001b[1m\u001b[96m|\u001b[0m let (snapped, noise) = manifold.snap([0.6, 0.8]);\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^\u001b[0m \u001b[1m\u001b[93mhelp: if this is intentional, prefix it with an underscore: `_snapped`\u001b[0m\n \u001b[1m\u001b[96m|\u001b[0m\n \u001b[1m\u001b[96m= \u001b[0m\u001b[1m\u001b[97mnote\u001b[0m: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default\n\n"} -{"$message_type":"diagnostic","message":"unused variable: `snapped`","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":5004,"byte_end":5011,"line_start":176,"line_end":176,"column_start":14,"column_end":21,"is_primary":true,"text":[{"text":" let (snapped, noise) = snap(&manifold, [0.6, 0.8]);","highlight_start":14,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if this is intentional, prefix it with an underscore","code":null,"level":"help","spans":[{"file_name":"src\\manifold.rs","byte_start":5004,"byte_end":5011,"line_start":176,"line_end":176,"column_start":14,"column_end":21,"is_primary":true,"text":[{"text":" let (snapped, noise) = snap(&manifold, [0.6, 0.8]);","highlight_start":14,"highlight_end":21}],"label":null,"suggested_replacement":"_snapped","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: unused variable: `snapped`\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:176:14\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m176\u001b[0m \u001b[1m\u001b[96m|\u001b[0m let (snapped, noise) = snap(&manifold, [0.6, 0.8]);\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^\u001b[0m \u001b[1m\u001b[93mhelp: if this is intentional, prefix it with an underscore: `_snapped`\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"aborting due to 3 previous errors; 2 warnings emitted","code":null,"level":"error","spans":[],"children":[],"rendered":"\u001b[1m\u001b[91merror\u001b[0m\u001b[1m\u001b[97m: aborting due to 3 previous errors; 2 warnings emitted\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"Some errors have detailed explanations: E0308, E0432, E0433.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"\u001b[1m\u001b[97mSome errors have detailed explanations: E0308, E0432, E0433.\u001b[0m\n"} -{"$message_type":"diagnostic","message":"For more information about an error, try `rustc --explain E0308`.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"\u001b[1m\u001b[97mFor more information about an error, try `rustc --explain E0308`.\u001b[0m\n"} diff --git a/crates/constraint-theory-core/target/debug/.fingerprint/constraint-theory-core-7f0dffe581eec7f2/invoked.timestamp b/crates/constraint-theory-core/target/debug/.fingerprint/constraint-theory-core-7f0dffe581eec7f2/invoked.timestamp deleted file mode 100644 index e00328d..0000000 --- a/crates/constraint-theory-core/target/debug/.fingerprint/constraint-theory-core-7f0dffe581eec7f2/invoked.timestamp +++ /dev/null @@ -1 +0,0 @@ -This file has an mtime of when this was started. \ No newline at end of file diff --git a/crates/constraint-theory-core/target/debug/.fingerprint/constraint-theory-core-7f0dffe581eec7f2/output-test-lib-constraint_theory_core b/crates/constraint-theory-core/target/debug/.fingerprint/constraint-theory-core-7f0dffe581eec7f2/output-test-lib-constraint_theory_core deleted file mode 100644 index f904db0..0000000 --- a/crates/constraint-theory-core/target/debug/.fingerprint/constraint-theory-core-7f0dffe581eec7f2/output-test-lib-constraint_theory_core +++ /dev/null @@ -1,8 +0,0 @@ -{"$message_type":"diagnostic","message":"unresolved import `rand`","code":{"code":"E0432","explanation":"An import was unresolved.\n\nErroneous code example:\n\n```compile_fail,E0432\nuse something::Foo; // error: unresolved import `something::Foo`.\n```\n\nIn Rust 2015, paths in `use` statements are relative to the crate root. To\nimport items relative to the current and parent modules, use the `self::` and\n`super::` prefixes, respectively.\n\nIn Rust 2018 or later, paths in `use` statements are relative to the current\nmodule unless they begin with the name of a crate or a literal `crate::`, in\nwhich case they start from the crate root. As in Rust 2015 code, the `self::`\nand `super::` prefixes refer to the current and parent modules respectively.\n\nAlso verify that you didn't misspell the import name and that the import exists\nin the module from where you tried to import it. Example:\n\n```\nuse self::something::Foo; // Ok.\n\nmod something {\n pub struct Foo;\n}\n# fn main() {}\n```\n\nIf you tried to use a module from an external crate and are using Rust 2015,\nyou may have missed the `extern crate` declaration (which is usually placed in\nthe crate root):\n\n```edition2015\nextern crate core; // Required to use the `core` crate in Rust 2015.\n\nuse core::any;\n# fn main() {}\n```\n\nSince Rust 2018 the `extern crate` declaration is not required and\nyou can instead just `use` it:\n\n```edition2018\nuse core::any; // No extern crate required in Rust 2018.\n# fn main() {}\n```\n"},"level":"error","spans":[{"file_name":"src\\kdtree.rs","byte_start":11713,"byte_end":11717,"line_start":390,"line_end":390,"column_start":13,"column_end":17,"is_primary":true,"text":[{"text":" use rand::Rng;","highlight_start":13,"highlight_end":17}],"label":"use of unresolved module or unlinked crate `rand`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `rand`, use `cargo add rand` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m\u001b[97m: unresolved import `rand`\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\kdtree.rs:390:13\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m390\u001b[0m \u001b[1m\u001b[96m|\u001b[0m use rand::Rng;\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `rand`\u001b[0m\n \u001b[1m\u001b[96m|\u001b[0m\n \u001b[1m\u001b[96m= \u001b[0m\u001b[1m\u001b[97mhelp\u001b[0m: if you wanted to use a crate named `rand`, use `cargo add rand` to add it to your `Cargo.toml`\n\n"} -{"$message_type":"diagnostic","message":"mismatched types","code":{"code":"E0308","explanation":"Expected type did not match the received type.\n\nErroneous code examples:\n\n```compile_fail,E0308\nfn plus_one(x: i32) -> i32 {\n x + 1\n}\n\nplus_one(\"Not a number\");\n// ^^^^^^^^^^^^^^ expected `i32`, found `&str`\n\nif \"Not a bool\" {\n// ^^^^^^^^^^^^ expected `bool`, found `&str`\n}\n\nlet x: f32 = \"Not a float\";\n// --- ^^^^^^^^^^^^^ expected `f32`, found `&str`\n// |\n// expected due to this\n```\n\nThis error occurs when an expression was used in a place where the compiler\nexpected an expression of a different type. It can occur in several cases, the\nmost common being when calling a function and passing an argument which has a\ndifferent type than the matching type in the function declaration.\n"},"level":"error","spans":[{"file_name":"src\\kdtree.rs","byte_start":7634,"byte_end":7645,"line_start":246,"line_end":246,"column_start":29,"column_end":40,"is_primary":true,"text":[{"text":" if let Some(&worst_dist) = results.worst_distance() {","highlight_start":29,"highlight_end":40}],"label":"expected `f32`, found `&_`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src\\kdtree.rs","byte_start":7649,"byte_end":7673,"line_start":246,"line_end":246,"column_start":44,"column_end":68,"is_primary":false,"text":[{"text":" if let Some(&worst_dist) = results.worst_distance() {","highlight_start":44,"highlight_end":68}],"label":"this expression has type `Option`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":" expected type `f32`\nfound reference `&_`","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"consider removing `&` from the pattern","code":null,"level":"help","spans":[{"file_name":"src\\kdtree.rs","byte_start":7634,"byte_end":7645,"line_start":246,"line_end":246,"column_start":29,"column_end":40,"is_primary":true,"text":[{"text":" if let Some(&worst_dist) = results.worst_distance() {","highlight_start":29,"highlight_end":40}],"label":null,"suggested_replacement":"worst_dist","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0308]\u001b[0m\u001b[1m\u001b[97m: mismatched types\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\kdtree.rs:246:29\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m246\u001b[0m \u001b[1m\u001b[96m|\u001b[0m if let Some(&worst_dist) = results.worst_distance() {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[91m^^^^^^^^^^^\u001b[0m \u001b[1m\u001b[96m------------------------\u001b[0m \u001b[1m\u001b[96mthis expression has type `Option`\u001b[0m\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[91m|\u001b[0m\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[91mexpected `f32`, found `&_`\u001b[0m\n \u001b[1m\u001b[96m|\u001b[0m\n \u001b[1m\u001b[96m= \u001b[0m\u001b[1m\u001b[97mnote\u001b[0m: expected type `\u001b[1m\u001b[35mf32\u001b[0m`\n found reference `\u001b[1m\u001b[35m&_\u001b[0m`\n\u001b[1m\u001b[96mhelp\u001b[0m: consider removing `&` from the pattern\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m246\u001b[0m \u001b[91m- \u001b[0m if let Some(\u001b[91m&worst_dist\u001b[0m) = results.worst_distance() {\n\u001b[1m\u001b[96m246\u001b[0m \u001b[92m+ \u001b[0m if let Some(\u001b[92mworst_dist\u001b[0m) = results.worst_distance() {\n \u001b[1m\u001b[96m|\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"failed to resolve: use of unresolved module or unlinked crate `rand`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"src\\kdtree.rs","byte_start":11747,"byte_end":11751,"line_start":392,"line_end":392,"column_start":23,"column_end":27,"is_primary":true,"text":[{"text":" let mut rng = rand::thread_rng();","highlight_start":23,"highlight_end":27}],"label":"use of unresolved module or unlinked crate `rand`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `rand`, use `cargo add rand` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m\u001b[97m: failed to resolve: use of unresolved module or unlinked crate `rand`\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\kdtree.rs:392:23\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m392\u001b[0m \u001b[1m\u001b[96m|\u001b[0m let mut rng = rand::thread_rng();\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `rand`\u001b[0m\n \u001b[1m\u001b[96m|\u001b[0m\n \u001b[1m\u001b[96m= \u001b[0m\u001b[1m\u001b[97mhelp\u001b[0m: if you wanted to use a crate named `rand`, use `cargo add rand` to add it to your `Cargo.toml`\n\n"} -{"$message_type":"diagnostic","message":"unused variable: `snapped`","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":4804,"byte_end":4811,"line_start":169,"line_end":169,"column_start":14,"column_end":21,"is_primary":true,"text":[{"text":" let (snapped, noise) = manifold.snap([0.6, 0.8]);","highlight_start":14,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"if this is intentional, prefix it with an underscore","code":null,"level":"help","spans":[{"file_name":"src\\manifold.rs","byte_start":4804,"byte_end":4811,"line_start":169,"line_end":169,"column_start":14,"column_end":21,"is_primary":true,"text":[{"text":" let (snapped, noise) = manifold.snap([0.6, 0.8]);","highlight_start":14,"highlight_end":21}],"label":null,"suggested_replacement":"_snapped","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: unused variable: `snapped`\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:169:14\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m169\u001b[0m \u001b[1m\u001b[96m|\u001b[0m let (snapped, noise) = manifold.snap([0.6, 0.8]);\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^\u001b[0m \u001b[1m\u001b[93mhelp: if this is intentional, prefix it with an underscore: `_snapped`\u001b[0m\n \u001b[1m\u001b[96m|\u001b[0m\n \u001b[1m\u001b[96m= \u001b[0m\u001b[1m\u001b[97mnote\u001b[0m: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default\n\n"} -{"$message_type":"diagnostic","message":"unused variable: `snapped`","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":5004,"byte_end":5011,"line_start":176,"line_end":176,"column_start":14,"column_end":21,"is_primary":true,"text":[{"text":" let (snapped, noise) = snap(&manifold, [0.6, 0.8]);","highlight_start":14,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if this is intentional, prefix it with an underscore","code":null,"level":"help","spans":[{"file_name":"src\\manifold.rs","byte_start":5004,"byte_end":5011,"line_start":176,"line_end":176,"column_start":14,"column_end":21,"is_primary":true,"text":[{"text":" let (snapped, noise) = snap(&manifold, [0.6, 0.8]);","highlight_start":14,"highlight_end":21}],"label":null,"suggested_replacement":"_snapped","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: unused variable: `snapped`\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:176:14\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m176\u001b[0m \u001b[1m\u001b[96m|\u001b[0m let (snapped, noise) = snap(&manifold, [0.6, 0.8]);\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^\u001b[0m \u001b[1m\u001b[93mhelp: if this is intentional, prefix it with an underscore: `_snapped`\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"aborting due to 3 previous errors; 2 warnings emitted","code":null,"level":"error","spans":[],"children":[],"rendered":"\u001b[1m\u001b[91merror\u001b[0m\u001b[1m\u001b[97m: aborting due to 3 previous errors; 2 warnings emitted\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"Some errors have detailed explanations: E0308, E0432, E0433.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"\u001b[1m\u001b[97mSome errors have detailed explanations: E0308, E0432, E0433.\u001b[0m\n"} -{"$message_type":"diagnostic","message":"For more information about an error, try `rustc --explain E0308`.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"\u001b[1m\u001b[97mFor more information about an error, try `rustc --explain E0308`.\u001b[0m\n"} diff --git a/crates/constraint-theory-core/target/debug/.fingerprint/constraint-theory-core-e8fa07649ba45e15/invoked.timestamp b/crates/constraint-theory-core/target/debug/.fingerprint/constraint-theory-core-e8fa07649ba45e15/invoked.timestamp deleted file mode 100644 index e00328d..0000000 --- a/crates/constraint-theory-core/target/debug/.fingerprint/constraint-theory-core-e8fa07649ba45e15/invoked.timestamp +++ /dev/null @@ -1 +0,0 @@ -This file has an mtime of when this was started. \ No newline at end of file diff --git a/crates/constraint-theory-core/target/debug/.fingerprint/constraint-theory-core-f22be875a1da29b0/invoked.timestamp b/crates/constraint-theory-core/target/debug/.fingerprint/constraint-theory-core-f22be875a1da29b0/invoked.timestamp deleted file mode 100644 index e00328d..0000000 --- a/crates/constraint-theory-core/target/debug/.fingerprint/constraint-theory-core-f22be875a1da29b0/invoked.timestamp +++ /dev/null @@ -1 +0,0 @@ -This file has an mtime of when this was started. \ No newline at end of file diff --git a/crates/constraint-theory-core/target/debug/deps/constraint_theory_core-6a59d354808d986e.d b/crates/constraint-theory-core/target/debug/deps/constraint_theory_core-6a59d354808d986e.d deleted file mode 100644 index 0bce7a5..0000000 --- a/crates/constraint-theory-core/target/debug/deps/constraint_theory_core-6a59d354808d986e.d +++ /dev/null @@ -1,18 +0,0 @@ -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\debug\deps\constraint_theory_core-6a59d354808d986e.d: src\lib.rs src\tile.rs src\manifold.rs src\curvature.rs src\cohomology.rs src\percolation.rs src\gauge.rs src\simd.rs src\kdtree.rs Cargo.toml - -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\debug\deps\libconstraint_theory_core-6a59d354808d986e.rmeta: src\lib.rs src\tile.rs src\manifold.rs src\curvature.rs src\cohomology.rs src\percolation.rs src\gauge.rs src\simd.rs src\kdtree.rs Cargo.toml - -src\lib.rs: -src\tile.rs: -src\manifold.rs: -src\curvature.rs: -src\cohomology.rs: -src\percolation.rs: -src\gauge.rs: -src\simd.rs: -src\kdtree.rs: -Cargo.toml: - -# env-dep:CARGO_PKG_VERSION=0.1.0 -# env-dep:CLIPPY_ARGS= -# env-dep:CLIPPY_CONF_DIR diff --git a/crates/constraint-theory-core/target/debug/deps/constraint_theory_core-7f0dffe581eec7f2.d b/crates/constraint-theory-core/target/debug/deps/constraint_theory_core-7f0dffe581eec7f2.d deleted file mode 100644 index 91f1156..0000000 --- a/crates/constraint-theory-core/target/debug/deps/constraint_theory_core-7f0dffe581eec7f2.d +++ /dev/null @@ -1,15 +0,0 @@ -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\debug\deps\constraint_theory_core-7f0dffe581eec7f2.d: src\lib.rs src\tile.rs src\manifold.rs src\curvature.rs src\cohomology.rs src\percolation.rs src\gauge.rs src\simd.rs src\kdtree.rs - -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\debug\deps\constraint_theory_core-7f0dffe581eec7f2.exe: src\lib.rs src\tile.rs src\manifold.rs src\curvature.rs src\cohomology.rs src\percolation.rs src\gauge.rs src\simd.rs src\kdtree.rs - -src\lib.rs: -src\tile.rs: -src\manifold.rs: -src\curvature.rs: -src\cohomology.rs: -src\percolation.rs: -src\gauge.rs: -src\simd.rs: -src\kdtree.rs: - -# env-dep:CARGO_PKG_VERSION=0.1.0 diff --git a/crates/constraint-theory-core/target/debug/deps/constraint_theory_core-e8fa07649ba45e15.d b/crates/constraint-theory-core/target/debug/deps/constraint_theory_core-e8fa07649ba45e15.d deleted file mode 100644 index 0fe1793..0000000 --- a/crates/constraint-theory-core/target/debug/deps/constraint_theory_core-e8fa07649ba45e15.d +++ /dev/null @@ -1,18 +0,0 @@ -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\debug\deps\constraint_theory_core-e8fa07649ba45e15.d: src\lib.rs src\cohomology.rs src\curvature.rs src\gauge.rs src\kdtree.rs src\manifold.rs src\percolation.rs src\simd.rs src\tile.rs Cargo.toml - -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\debug\deps\libconstraint_theory_core-e8fa07649ba45e15.rmeta: src\lib.rs src\cohomology.rs src\curvature.rs src\gauge.rs src\kdtree.rs src\manifold.rs src\percolation.rs src\simd.rs src\tile.rs Cargo.toml - -src\lib.rs: -src\cohomology.rs: -src\curvature.rs: -src\gauge.rs: -src\kdtree.rs: -src\manifold.rs: -src\percolation.rs: -src\simd.rs: -src\tile.rs: -Cargo.toml: - -# env-dep:CARGO_PKG_VERSION=0.1.0 -# env-dep:CLIPPY_ARGS=-W__CLIPPY_HACKERY__clippy::all__CLIPPY_HACKERY__ -# env-dep:CLIPPY_CONF_DIR diff --git a/crates/constraint-theory-core/target/debug/deps/constraint_theory_core-f22be875a1da29b0.d b/crates/constraint-theory-core/target/debug/deps/constraint_theory_core-f22be875a1da29b0.d deleted file mode 100644 index 0e2ecdd..0000000 --- a/crates/constraint-theory-core/target/debug/deps/constraint_theory_core-f22be875a1da29b0.d +++ /dev/null @@ -1,17 +0,0 @@ -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\debug\deps\constraint_theory_core-f22be875a1da29b0.d: src\lib.rs src\cohomology.rs src\curvature.rs src\gauge.rs src\kdtree.rs src\manifold.rs src\percolation.rs src\simd.rs src\tile.rs - -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\debug\deps\libconstraint_theory_core-f22be875a1da29b0.rlib: src\lib.rs src\cohomology.rs src\curvature.rs src\gauge.rs src\kdtree.rs src\manifold.rs src\percolation.rs src\simd.rs src\tile.rs - -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\debug\deps\libconstraint_theory_core-f22be875a1da29b0.rmeta: src\lib.rs src\cohomology.rs src\curvature.rs src\gauge.rs src\kdtree.rs src\manifold.rs src\percolation.rs src\simd.rs src\tile.rs - -src\lib.rs: -src\cohomology.rs: -src\curvature.rs: -src\gauge.rs: -src\kdtree.rs: -src\manifold.rs: -src\percolation.rs: -src\simd.rs: -src\tile.rs: - -# env-dep:CARGO_PKG_VERSION=0.1.0 diff --git a/crates/constraint-theory-core/target/debug/incremental/constraint_theory_core-0vm0ehke17sph/s-hgpr0tu1ak-19tq4n8-working/dep-graph.part.bin b/crates/constraint-theory-core/target/debug/incremental/constraint_theory_core-0vm0ehke17sph/s-hgpr0tu1ak-19tq4n8-working/dep-graph.part.bin deleted file mode 100644 index 0df7dd5..0000000 Binary files a/crates/constraint-theory-core/target/debug/incremental/constraint_theory_core-0vm0ehke17sph/s-hgpr0tu1ak-19tq4n8-working/dep-graph.part.bin and /dev/null differ diff --git a/crates/constraint-theory-core/target/debug/incremental/constraint_theory_core-0vm0ehke17sph/s-hgpr0tu1ak-19tq4n8.lock b/crates/constraint-theory-core/target/debug/incremental/constraint_theory_core-0vm0ehke17sph/s-hgpr0tu1ak-19tq4n8.lock deleted file mode 100644 index e69de29..0000000 diff --git a/crates/constraint-theory-core/target/debug/incremental/constraint_theory_core-0w99q3azdbmau/s-hgpr1j98l5-0zwn4sl-working/dep-graph.part.bin b/crates/constraint-theory-core/target/debug/incremental/constraint_theory_core-0w99q3azdbmau/s-hgpr1j98l5-0zwn4sl-working/dep-graph.part.bin deleted file mode 100644 index 9dcacec..0000000 Binary files a/crates/constraint-theory-core/target/debug/incremental/constraint_theory_core-0w99q3azdbmau/s-hgpr1j98l5-0zwn4sl-working/dep-graph.part.bin and /dev/null differ diff --git a/crates/constraint-theory-core/target/debug/incremental/constraint_theory_core-0w99q3azdbmau/s-hgpr1j98l5-0zwn4sl.lock b/crates/constraint-theory-core/target/debug/incremental/constraint_theory_core-0w99q3azdbmau/s-hgpr1j98l5-0zwn4sl.lock deleted file mode 100644 index e69de29..0000000 diff --git a/crates/constraint-theory-core/target/release/.cargo-lock b/crates/constraint-theory-core/target/release/.cargo-lock deleted file mode 100644 index e69de29..0000000 diff --git a/crates/constraint-theory-core/target/release/.fingerprint/cfg-if-9338128228d95daf/dep-lib-cfg_if b/crates/constraint-theory-core/target/release/.fingerprint/cfg-if-9338128228d95daf/dep-lib-cfg_if deleted file mode 100644 index ec3cb8b..0000000 Binary files a/crates/constraint-theory-core/target/release/.fingerprint/cfg-if-9338128228d95daf/dep-lib-cfg_if and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/.fingerprint/cfg-if-9338128228d95daf/invoked.timestamp b/crates/constraint-theory-core/target/release/.fingerprint/cfg-if-9338128228d95daf/invoked.timestamp deleted file mode 100644 index e00328d..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/cfg-if-9338128228d95daf/invoked.timestamp +++ /dev/null @@ -1 +0,0 @@ -This file has an mtime of when this was started. \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/cfg-if-9338128228d95daf/lib-cfg_if b/crates/constraint-theory-core/target/release/.fingerprint/cfg-if-9338128228d95daf/lib-cfg_if deleted file mode 100644 index 6828fbd..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/cfg-if-9338128228d95daf/lib-cfg_if +++ /dev/null @@ -1 +0,0 @@ -b5cefa45be9180d9 \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/cfg-if-9338128228d95daf/lib-cfg_if.json b/crates/constraint-theory-core/target/release/.fingerprint/cfg-if-9338128228d95daf/lib-cfg_if.json deleted file mode 100644 index c37124a..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/cfg-if-9338128228d95daf/lib-cfg_if.json +++ /dev/null @@ -1 +0,0 @@ -{"rustc":7895727629726570510,"features":"[]","declared_features":"[\"core\", \"rustc-dep-of-std\"]","target":13840298032947503755,"profile":13952719172529475294,"path":18356703282704151639,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release\\.fingerprint\\cfg-if-9338128228d95daf\\dep-lib-cfg_if","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0} \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-04ef63c691fb1dd3/dep-test-lib-constraint_theory_core b/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-04ef63c691fb1dd3/dep-test-lib-constraint_theory_core deleted file mode 100644 index df135ce..0000000 Binary files a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-04ef63c691fb1dd3/dep-test-lib-constraint_theory_core and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-04ef63c691fb1dd3/invoked.timestamp b/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-04ef63c691fb1dd3/invoked.timestamp deleted file mode 100644 index e00328d..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-04ef63c691fb1dd3/invoked.timestamp +++ /dev/null @@ -1 +0,0 @@ -This file has an mtime of when this was started. \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-04ef63c691fb1dd3/output-test-lib-constraint_theory_core b/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-04ef63c691fb1dd3/output-test-lib-constraint_theory_core deleted file mode 100644 index 8c30f46..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-04ef63c691fb1dd3/output-test-lib-constraint_theory_core +++ /dev/null @@ -1,39 +0,0 @@ -{"$message_type":"diagnostic","message":"unused variable: `snapped`","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":3349,"byte_end":3356,"line_start":128,"line_end":128,"column_start":14,"column_end":21,"is_primary":true,"text":[{"text":" let (snapped, noise) = manifold.snap([0.6, 0.8]);","highlight_start":14,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"if this is intentional, prefix it with an underscore","code":null,"level":"help","spans":[{"file_name":"src\\manifold.rs","byte_start":3349,"byte_end":3356,"line_start":128,"line_end":128,"column_start":14,"column_end":21,"is_primary":true,"text":[{"text":" let (snapped, noise) = manifold.snap([0.6, 0.8]);","highlight_start":14,"highlight_end":21}],"label":null,"suggested_replacement":"_snapped","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: unused variable: `snapped`\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:128:14\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m128\u001b[0m \u001b[1m\u001b[96m|\u001b[0m let (snapped, noise) = manifold.snap([0.6, 0.8]);\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^\u001b[0m \u001b[1m\u001b[93mhelp: if this is intentional, prefix it with an underscore: `_snapped`\u001b[0m\n \u001b[1m\u001b[96m|\u001b[0m\n \u001b[1m\u001b[96m= \u001b[0m\u001b[1m\u001b[97mnote\u001b[0m: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default\n\n"} -{"$message_type":"diagnostic","message":"unused variable: `snapped`","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":3549,"byte_end":3556,"line_start":135,"line_end":135,"column_start":14,"column_end":21,"is_primary":true,"text":[{"text":" let (snapped, noise) = snap(&manifold, [0.6, 0.8]);","highlight_start":14,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if this is intentional, prefix it with an underscore","code":null,"level":"help","spans":[{"file_name":"src\\manifold.rs","byte_start":3549,"byte_end":3556,"line_start":135,"line_end":135,"column_start":14,"column_end":21,"is_primary":true,"text":[{"text":" let (snapped, noise) = snap(&manifold, [0.6, 0.8]);","highlight_start":14,"highlight_end":21}],"label":null,"suggested_replacement":"_snapped","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: unused variable: `snapped`\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:135:14\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m135\u001b[0m \u001b[1m\u001b[96m|\u001b[0m let (snapped, noise) = snap(&manifold, [0.6, 0.8]);\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^\u001b[0m \u001b[1m\u001b[93mhelp: if this is intentional, prefix it with an underscore: `_snapped`\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":82,"byte_end":110,"line_start":4,"line_end":4,"column_start":1,"column_end":29,"is_primary":true,"text":[{"text":"pub struct PythagoreanTriple {","highlight_start":1,"highlight_end":29}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"the lint level is defined here","code":null,"level":"note","spans":[{"file_name":"src\\lib.rs","byte_start":754,"byte_end":766,"line_start":28,"line_end":28,"column_start":9,"column_end":21,"is_primary":true,"text":[{"text":"#![warn(missing_docs)]","highlight_start":9,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:4:1\n \u001b[1m\u001b[96m|\u001b[0m\n \u001b[1m\u001b[96m4\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub struct PythagoreanTriple {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[92mnote\u001b[0m: the lint level is defined here\n \u001b[1m\u001b[96m--> \u001b[0msrc\\lib.rs:28:9\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m28\u001b[0m \u001b[1m\u001b[96m|\u001b[0m #![warn(missing_docs)]\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[92m^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":118,"byte_end":128,"line_start":5,"line_end":5,"column_start":5,"column_end":15,"is_primary":true,"text":[{"text":" pub a: f32,","highlight_start":5,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:5:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m5\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub a: f32,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":135,"byte_end":145,"line_start":6,"line_end":6,"column_start":5,"column_end":15,"is_primary":true,"text":[{"text":" pub b: f32,","highlight_start":5,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:6:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m6\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub b: f32,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":152,"byte_end":162,"line_start":7,"line_end":7,"column_start":5,"column_end":15,"is_primary":true,"text":[{"text":" pub c: f32,","highlight_start":5,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:7:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m7\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub c: f32,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for an associated function","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":200,"byte_end":242,"line_start":11,"line_end":11,"column_start":5,"column_end":47,"is_primary":true,"text":[{"text":" pub fn new(a: f32, b: f32, c: f32) -> Self {","highlight_start":5,"highlight_end":47}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for an associated function\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:11:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m11\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn new(a: f32, b: f32, c: f32) -> Self {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a method","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":285,"byte_end":315,"line_start":15,"line_end":15,"column_start":5,"column_end":35,"is_primary":true,"text":[{"text":" pub fn is_valid(&self) -> bool {","highlight_start":5,"highlight_end":35}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a method\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:15:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m15\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn is_valid(&self) -> bool {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a method","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":408,"byte_end":443,"line_start":19,"line_end":19,"column_start":5,"column_end":40,"is_primary":true,"text":[{"text":" pub fn to_vector(&self) -> [f32; 2] {","highlight_start":5,"highlight_end":40}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a method\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:19:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m19\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn to_vector(&self) -> [f32; 2] {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":521,"byte_end":551,"line_start":25,"line_end":25,"column_start":1,"column_end":31,"is_primary":true,"text":[{"text":"pub struct PythagoreanManifold {","highlight_start":1,"highlight_end":31}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:25:1\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m25\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub struct PythagoreanManifold {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for an associated function","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":626,"byte_end":660,"line_start":30,"line_end":30,"column_start":5,"column_end":39,"is_primary":true,"text":[{"text":" pub fn new(density: usize) -> Self {","highlight_start":5,"highlight_end":39}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for an associated function\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:30:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m30\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn new(density: usize) -> Self {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a method","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":1524,"byte_end":1558,"line_start":58,"line_end":58,"column_start":5,"column_end":39,"is_primary":true,"text":[{"text":" pub fn state_count(&self) -> usize {","highlight_start":5,"highlight_end":39}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a method\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:58:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m58\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn state_count(&self) -> usize {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a method","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":1608,"byte_end":1663,"line_start":62,"line_end":62,"column_start":5,"column_end":60,"is_primary":true,"text":[{"text":" pub fn snap(&self, vector: [f32; 2]) -> ([f32; 2], f32) {","highlight_start":5,"highlight_end":60}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a method\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:62:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m62\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn snap(&self, vector: [f32; 2]) -> ([f32; 2], f32) {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a method","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":2378,"byte_end":2457,"line_start":88,"line_end":88,"column_start":5,"column_end":84,"is_primary":true,"text":[{"text":" pub fn snap_batch(&self, vectors: &[[f32; 2]], results: &mut [([f32; 2], f32)]) {","highlight_start":5,"highlight_end":84}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a method\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:88:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m88\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn snap_batch(&self, vectors: &[[f32; 2]], results: &mut [([f32; 2], f32)]) {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a function","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":2581,"byte_end":2661,"line_start":95,"line_end":95,"column_start":1,"column_end":81,"is_primary":true,"text":[{"text":"pub fn snap(manifold: &PythagoreanManifold, vector: [f32; 2]) -> ([f32; 2], f32) {","highlight_start":1,"highlight_end":81}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a function\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:95:1\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m95\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn snap(manifold: &PythagoreanManifold, vector: [f32; 2]) -> ([f32; 2], f32) {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for an associated function","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\curvature.rs","byte_start":190,"byte_end":243,"line_start":11,"line_end":11,"column_start":5,"column_end":58,"is_primary":true,"text":[{"text":" pub fn new(alpha: f32, target_curvature: f32) -> Self {","highlight_start":5,"highlight_end":58}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for an associated function\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\curvature.rs:11:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m11\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn new(alpha: f32, target_curvature: f32) -> Self {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for an associated function","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\curvature.rs","byte_start":338,"byte_end":362,"line_start":18,"line_end":18,"column_start":5,"column_end":29,"is_primary":true,"text":[{"text":" pub fn default() -> Self {","highlight_start":5,"highlight_end":29}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for an associated function\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\curvature.rs:18:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m18\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn default() -> Self {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a method","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\curvature.rs","byte_start":408,"byte_end":470,"line_start":22,"line_end":22,"column_start":5,"column_end":67,"is_primary":true,"text":[{"text":" pub fn evolve(&mut self, curvatures: &mut [f32], steps: usize) {","highlight_start":5,"highlight_end":67}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a method\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\curvature.rs:22:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m22\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn evolve(&mut self, curvatures: &mut [f32], steps: usize) {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a function","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\curvature.rs","byte_start":653,"byte_end":723,"line_start":31,"line_end":31,"column_start":1,"column_end":71,"is_primary":true,"text":[{"text":"pub fn ricci_flow_step(curvature: f32, alpha: f32, target: f32) -> f32 {","highlight_start":1,"highlight_end":71}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a function\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\curvature.rs:31:1\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m31\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn ricci_flow_step(curvature: f32, alpha: f32, target: f32) -> f32 {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\cohomology.rs","byte_start":36,"byte_end":63,"line_start":3,"line_end":3,"column_start":1,"column_end":28,"is_primary":true,"text":[{"text":"pub struct CohomologyResult {","highlight_start":1,"highlight_end":28}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\cohomology.rs:3:1\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m3\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub struct CohomologyResult {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\cohomology.rs","byte_start":71,"byte_end":88,"line_start":4,"line_end":4,"column_start":5,"column_end":22,"is_primary":true,"text":[{"text":" pub h0_dim: usize,","highlight_start":5,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\cohomology.rs:4:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m4\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub h0_dim: usize,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\cohomology.rs","byte_start":95,"byte_end":112,"line_start":5,"line_end":5,"column_start":5,"column_end":22,"is_primary":true,"text":[{"text":" pub h1_dim: usize,","highlight_start":5,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\cohomology.rs:5:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m5\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub h1_dim: usize,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\cohomology.rs","byte_start":119,"byte_end":140,"line_start":6,"line_end":6,"column_start":5,"column_end":26,"is_primary":true,"text":[{"text":" pub n_vertices: usize,","highlight_start":5,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\cohomology.rs:6:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m6\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub n_vertices: usize,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\cohomology.rs","byte_start":147,"byte_end":165,"line_start":7,"line_end":7,"column_start":5,"column_end":23,"is_primary":true,"text":[{"text":" pub n_edges: usize,","highlight_start":5,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\cohomology.rs:7:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m7\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub n_edges: usize,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\cohomology.rs","byte_start":173,"byte_end":198,"line_start":10,"line_end":10,"column_start":1,"column_end":26,"is_primary":true,"text":[{"text":"pub struct FastCohomology;","highlight_start":1,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\cohomology.rs:10:1\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m10\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub struct FastCohomology;\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for an associated function","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\cohomology.rs","byte_start":230,"byte_end":320,"line_start":13,"line_end":13,"column_start":5,"column_end":95,"is_primary":true,"text":[{"text":" pub fn compute(n_vertices: usize, n_edges: usize, n_components: usize) -> CohomologyResult {","highlight_start":5,"highlight_end":95}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for an associated function\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\cohomology.rs:13:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m13\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn compute(n_vertices: usize, n_edges: usize, n_components: usize) -> CohomologyResult {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\percolation.rs","byte_start":84,"byte_end":109,"line_start":5,"line_end":5,"column_start":1,"column_end":26,"is_primary":true,"text":[{"text":"pub struct RigidityResult {","highlight_start":1,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\percolation.rs:5:1\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m5\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub struct RigidityResult {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\percolation.rs","byte_start":117,"byte_end":135,"line_start":6,"line_end":6,"column_start":5,"column_end":23,"is_primary":true,"text":[{"text":" pub is_rigid: bool,","highlight_start":5,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\percolation.rs:6:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m6\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub is_rigid: bool,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\percolation.rs","byte_start":142,"byte_end":157,"line_start":7,"line_end":7,"column_start":5,"column_end":20,"is_primary":true,"text":[{"text":" pub rank: usize,","highlight_start":5,"highlight_end":20}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\percolation.rs:7:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m7\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub rank: usize,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\percolation.rs","byte_start":164,"byte_end":185,"line_start":8,"line_end":8,"column_start":5,"column_end":26,"is_primary":true,"text":[{"text":" pub deficiency: usize,","highlight_start":5,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\percolation.rs:8:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m8\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub deficiency: usize,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\percolation.rs","byte_start":192,"byte_end":213,"line_start":9,"line_end":9,"column_start":5,"column_end":26,"is_primary":true,"text":[{"text":" pub n_clusters: usize,","highlight_start":5,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\percolation.rs:9:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m9\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub n_clusters: usize,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\percolation.rs","byte_start":220,"byte_end":243,"line_start":10,"line_end":10,"column_start":5,"column_end":28,"is_primary":true,"text":[{"text":" pub rigid_fraction: f32,","highlight_start":5,"highlight_end":28}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\percolation.rs:10:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m10\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub rigid_fraction: f32,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\percolation.rs","byte_start":251,"byte_end":277,"line_start":13,"line_end":13,"column_start":1,"column_end":27,"is_primary":true,"text":[{"text":"pub struct FastPercolation {","highlight_start":1,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\percolation.rs:13:1\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m13\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub struct FastPercolation {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for an associated function","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\percolation.rs","byte_start":385,"byte_end":413,"line_start":20,"line_end":20,"column_start":5,"column_end":33,"is_primary":true,"text":[{"text":" pub fn new(n: usize) -> Self {","highlight_start":5,"highlight_end":33}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for an associated function\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\percolation.rs:20:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m20\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn new(n: usize) -> Self {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a method","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\percolation.rs","byte_start":1314,"byte_end":1408,"line_start":56,"line_end":56,"column_start":5,"column_end":99,"is_primary":true,"text":[{"text":" pub fn compute_rigidity(&mut self, edges: &[(usize, usize)], n_nodes: usize) -> RigidityResult {","highlight_start":5,"highlight_end":99}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a method\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\percolation.rs:56:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m56\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn compute_rigidity(&mut self, edges: &[(usize, usize)], n_nodes: usize) -> RigidityResult {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\gauge.rs","byte_start":73,"byte_end":99,"line_start":5,"line_end":5,"column_start":1,"column_end":27,"is_primary":true,"text":[{"text":"pub struct GaugeConnection {","highlight_start":1,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\gauge.rs:5:1\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m5\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub struct GaugeConnection {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for an associated function","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\gauge.rs","byte_start":159,"byte_end":195,"line_start":10,"line_end":10,"column_start":5,"column_end":41,"is_primary":true,"text":[{"text":" pub fn new(tiles: Vec) -> Self {","highlight_start":5,"highlight_end":41}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for an associated function\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\gauge.rs:10:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m10\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn new(tiles: Vec) -> Self {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a method","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\gauge.rs","byte_start":236,"byte_end":314,"line_start":14,"line_end":14,"column_start":5,"column_end":83,"is_primary":true,"text":[{"text":" pub fn parallel_transport(&self, vector: [f32; 3], path: &[usize]) -> [f32; 3] {","highlight_start":5,"highlight_end":83}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a method\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\gauge.rs:14:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m14\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn parallel_transport(&self, vector: [f32; 3], path: &[usize]) -> [f32; 3] {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"38 warnings emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: 38 warnings emitted\u001b[0m\n\n"} diff --git a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-04ef63c691fb1dd3/test-lib-constraint_theory_core b/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-04ef63c691fb1dd3/test-lib-constraint_theory_core deleted file mode 100644 index 7b47ede..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-04ef63c691fb1dd3/test-lib-constraint_theory_core +++ /dev/null @@ -1 +0,0 @@ -35cb529ded9accc2 \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-04ef63c691fb1dd3/test-lib-constraint_theory_core.json b/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-04ef63c691fb1dd3/test-lib-constraint_theory_core.json deleted file mode 100644 index d5fb05e..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-04ef63c691fb1dd3/test-lib-constraint_theory_core.json +++ /dev/null @@ -1 +0,0 @@ -{"rustc":7895727629726570510,"features":"[]","declared_features":"[]","target":11166341763917188602,"profile":13736914243600034394,"path":10763286916239946207,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release\\.fingerprint\\constraint-theory-core-04ef63c691fb1dd3\\dep-test-lib-constraint_theory_core","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0} \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-17da37567b83775d/dep-lib-constraint_theory_core b/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-17da37567b83775d/dep-lib-constraint_theory_core deleted file mode 100644 index 7191faf..0000000 Binary files a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-17da37567b83775d/dep-lib-constraint_theory_core and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-17da37567b83775d/invoked.timestamp b/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-17da37567b83775d/invoked.timestamp deleted file mode 100644 index e00328d..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-17da37567b83775d/invoked.timestamp +++ /dev/null @@ -1 +0,0 @@ -This file has an mtime of when this was started. \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-17da37567b83775d/lib-constraint_theory_core b/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-17da37567b83775d/lib-constraint_theory_core deleted file mode 100644 index e0f1b55..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-17da37567b83775d/lib-constraint_theory_core +++ /dev/null @@ -1 +0,0 @@ -9182cbd50b6ebcb8 \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-17da37567b83775d/lib-constraint_theory_core.json b/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-17da37567b83775d/lib-constraint_theory_core.json deleted file mode 100644 index b2969e2..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-17da37567b83775d/lib-constraint_theory_core.json +++ /dev/null @@ -1 +0,0 @@ -{"rustc":7895727629726570510,"features":"[]","declared_features":"[]","target":11166341763917188602,"profile":4701875279837757004,"path":10763286916239946207,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release\\.fingerprint\\constraint-theory-core-17da37567b83775d\\dep-lib-constraint_theory_core","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0} \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-17da37567b83775d/output-lib-constraint_theory_core b/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-17da37567b83775d/output-lib-constraint_theory_core deleted file mode 100644 index 8e3438b..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-17da37567b83775d/output-lib-constraint_theory_core +++ /dev/null @@ -1,37 +0,0 @@ -{"$message_type":"diagnostic","message":"missing documentation for a struct","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":82,"byte_end":110,"line_start":4,"line_end":4,"column_start":1,"column_end":29,"is_primary":true,"text":[{"text":"pub struct PythagoreanTriple {","highlight_start":1,"highlight_end":29}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"the lint level is defined here","code":null,"level":"note","spans":[{"file_name":"src\\lib.rs","byte_start":754,"byte_end":766,"line_start":28,"line_end":28,"column_start":9,"column_end":21,"is_primary":true,"text":[{"text":"#![warn(missing_docs)]","highlight_start":9,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:4:1\n \u001b[1m\u001b[96m|\u001b[0m\n \u001b[1m\u001b[96m4\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub struct PythagoreanTriple {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[92mnote\u001b[0m: the lint level is defined here\n \u001b[1m\u001b[96m--> \u001b[0msrc\\lib.rs:28:9\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m28\u001b[0m \u001b[1m\u001b[96m|\u001b[0m #![warn(missing_docs)]\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[92m^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":118,"byte_end":128,"line_start":5,"line_end":5,"column_start":5,"column_end":15,"is_primary":true,"text":[{"text":" pub a: f32,","highlight_start":5,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:5:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m5\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub a: f32,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":135,"byte_end":145,"line_start":6,"line_end":6,"column_start":5,"column_end":15,"is_primary":true,"text":[{"text":" pub b: f32,","highlight_start":5,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:6:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m6\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub b: f32,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":152,"byte_end":162,"line_start":7,"line_end":7,"column_start":5,"column_end":15,"is_primary":true,"text":[{"text":" pub c: f32,","highlight_start":5,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:7:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m7\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub c: f32,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for an associated function","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":200,"byte_end":242,"line_start":11,"line_end":11,"column_start":5,"column_end":47,"is_primary":true,"text":[{"text":" pub fn new(a: f32, b: f32, c: f32) -> Self {","highlight_start":5,"highlight_end":47}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for an associated function\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:11:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m11\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn new(a: f32, b: f32, c: f32) -> Self {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a method","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":285,"byte_end":315,"line_start":15,"line_end":15,"column_start":5,"column_end":35,"is_primary":true,"text":[{"text":" pub fn is_valid(&self) -> bool {","highlight_start":5,"highlight_end":35}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a method\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:15:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m15\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn is_valid(&self) -> bool {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a method","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":408,"byte_end":443,"line_start":19,"line_end":19,"column_start":5,"column_end":40,"is_primary":true,"text":[{"text":" pub fn to_vector(&self) -> [f32; 2] {","highlight_start":5,"highlight_end":40}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a method\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:19:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m19\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn to_vector(&self) -> [f32; 2] {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":521,"byte_end":551,"line_start":25,"line_end":25,"column_start":1,"column_end":31,"is_primary":true,"text":[{"text":"pub struct PythagoreanManifold {","highlight_start":1,"highlight_end":31}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:25:1\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m25\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub struct PythagoreanManifold {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for an associated function","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":626,"byte_end":660,"line_start":30,"line_end":30,"column_start":5,"column_end":39,"is_primary":true,"text":[{"text":" pub fn new(density: usize) -> Self {","highlight_start":5,"highlight_end":39}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for an associated function\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:30:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m30\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn new(density: usize) -> Self {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a method","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":1524,"byte_end":1558,"line_start":58,"line_end":58,"column_start":5,"column_end":39,"is_primary":true,"text":[{"text":" pub fn state_count(&self) -> usize {","highlight_start":5,"highlight_end":39}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a method\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:58:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m58\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn state_count(&self) -> usize {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a method","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":1608,"byte_end":1663,"line_start":62,"line_end":62,"column_start":5,"column_end":60,"is_primary":true,"text":[{"text":" pub fn snap(&self, vector: [f32; 2]) -> ([f32; 2], f32) {","highlight_start":5,"highlight_end":60}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a method\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:62:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m62\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn snap(&self, vector: [f32; 2]) -> ([f32; 2], f32) {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a method","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":2378,"byte_end":2457,"line_start":88,"line_end":88,"column_start":5,"column_end":84,"is_primary":true,"text":[{"text":" pub fn snap_batch(&self, vectors: &[[f32; 2]], results: &mut [([f32; 2], f32)]) {","highlight_start":5,"highlight_end":84}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a method\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:88:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m88\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn snap_batch(&self, vectors: &[[f32; 2]], results: &mut [([f32; 2], f32)]) {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a function","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":2581,"byte_end":2661,"line_start":95,"line_end":95,"column_start":1,"column_end":81,"is_primary":true,"text":[{"text":"pub fn snap(manifold: &PythagoreanManifold, vector: [f32; 2]) -> ([f32; 2], f32) {","highlight_start":1,"highlight_end":81}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a function\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:95:1\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m95\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn snap(manifold: &PythagoreanManifold, vector: [f32; 2]) -> ([f32; 2], f32) {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for an associated function","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\curvature.rs","byte_start":190,"byte_end":243,"line_start":11,"line_end":11,"column_start":5,"column_end":58,"is_primary":true,"text":[{"text":" pub fn new(alpha: f32, target_curvature: f32) -> Self {","highlight_start":5,"highlight_end":58}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for an associated function\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\curvature.rs:11:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m11\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn new(alpha: f32, target_curvature: f32) -> Self {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for an associated function","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\curvature.rs","byte_start":338,"byte_end":362,"line_start":18,"line_end":18,"column_start":5,"column_end":29,"is_primary":true,"text":[{"text":" pub fn default() -> Self {","highlight_start":5,"highlight_end":29}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for an associated function\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\curvature.rs:18:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m18\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn default() -> Self {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a method","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\curvature.rs","byte_start":408,"byte_end":470,"line_start":22,"line_end":22,"column_start":5,"column_end":67,"is_primary":true,"text":[{"text":" pub fn evolve(&mut self, curvatures: &mut [f32], steps: usize) {","highlight_start":5,"highlight_end":67}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a method\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\curvature.rs:22:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m22\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn evolve(&mut self, curvatures: &mut [f32], steps: usize) {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a function","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\curvature.rs","byte_start":653,"byte_end":723,"line_start":31,"line_end":31,"column_start":1,"column_end":71,"is_primary":true,"text":[{"text":"pub fn ricci_flow_step(curvature: f32, alpha: f32, target: f32) -> f32 {","highlight_start":1,"highlight_end":71}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a function\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\curvature.rs:31:1\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m31\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn ricci_flow_step(curvature: f32, alpha: f32, target: f32) -> f32 {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\cohomology.rs","byte_start":36,"byte_end":63,"line_start":3,"line_end":3,"column_start":1,"column_end":28,"is_primary":true,"text":[{"text":"pub struct CohomologyResult {","highlight_start":1,"highlight_end":28}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\cohomology.rs:3:1\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m3\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub struct CohomologyResult {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\cohomology.rs","byte_start":71,"byte_end":88,"line_start":4,"line_end":4,"column_start":5,"column_end":22,"is_primary":true,"text":[{"text":" pub h0_dim: usize,","highlight_start":5,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\cohomology.rs:4:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m4\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub h0_dim: usize,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\cohomology.rs","byte_start":95,"byte_end":112,"line_start":5,"line_end":5,"column_start":5,"column_end":22,"is_primary":true,"text":[{"text":" pub h1_dim: usize,","highlight_start":5,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\cohomology.rs:5:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m5\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub h1_dim: usize,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\cohomology.rs","byte_start":119,"byte_end":140,"line_start":6,"line_end":6,"column_start":5,"column_end":26,"is_primary":true,"text":[{"text":" pub n_vertices: usize,","highlight_start":5,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\cohomology.rs:6:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m6\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub n_vertices: usize,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\cohomology.rs","byte_start":147,"byte_end":165,"line_start":7,"line_end":7,"column_start":5,"column_end":23,"is_primary":true,"text":[{"text":" pub n_edges: usize,","highlight_start":5,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\cohomology.rs:7:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m7\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub n_edges: usize,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\cohomology.rs","byte_start":173,"byte_end":198,"line_start":10,"line_end":10,"column_start":1,"column_end":26,"is_primary":true,"text":[{"text":"pub struct FastCohomology;","highlight_start":1,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\cohomology.rs:10:1\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m10\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub struct FastCohomology;\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for an associated function","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\cohomology.rs","byte_start":230,"byte_end":320,"line_start":13,"line_end":13,"column_start":5,"column_end":95,"is_primary":true,"text":[{"text":" pub fn compute(n_vertices: usize, n_edges: usize, n_components: usize) -> CohomologyResult {","highlight_start":5,"highlight_end":95}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for an associated function\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\cohomology.rs:13:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m13\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn compute(n_vertices: usize, n_edges: usize, n_components: usize) -> CohomologyResult {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\percolation.rs","byte_start":84,"byte_end":109,"line_start":5,"line_end":5,"column_start":1,"column_end":26,"is_primary":true,"text":[{"text":"pub struct RigidityResult {","highlight_start":1,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\percolation.rs:5:1\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m5\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub struct RigidityResult {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\percolation.rs","byte_start":117,"byte_end":135,"line_start":6,"line_end":6,"column_start":5,"column_end":23,"is_primary":true,"text":[{"text":" pub is_rigid: bool,","highlight_start":5,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\percolation.rs:6:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m6\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub is_rigid: bool,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\percolation.rs","byte_start":142,"byte_end":157,"line_start":7,"line_end":7,"column_start":5,"column_end":20,"is_primary":true,"text":[{"text":" pub rank: usize,","highlight_start":5,"highlight_end":20}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\percolation.rs:7:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m7\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub rank: usize,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\percolation.rs","byte_start":164,"byte_end":185,"line_start":8,"line_end":8,"column_start":5,"column_end":26,"is_primary":true,"text":[{"text":" pub deficiency: usize,","highlight_start":5,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\percolation.rs:8:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m8\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub deficiency: usize,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\percolation.rs","byte_start":192,"byte_end":213,"line_start":9,"line_end":9,"column_start":5,"column_end":26,"is_primary":true,"text":[{"text":" pub n_clusters: usize,","highlight_start":5,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\percolation.rs:9:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m9\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub n_clusters: usize,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\percolation.rs","byte_start":220,"byte_end":243,"line_start":10,"line_end":10,"column_start":5,"column_end":28,"is_primary":true,"text":[{"text":" pub rigid_fraction: f32,","highlight_start":5,"highlight_end":28}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\percolation.rs:10:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m10\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub rigid_fraction: f32,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\percolation.rs","byte_start":251,"byte_end":277,"line_start":13,"line_end":13,"column_start":1,"column_end":27,"is_primary":true,"text":[{"text":"pub struct FastPercolation {","highlight_start":1,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\percolation.rs:13:1\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m13\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub struct FastPercolation {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for an associated function","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\percolation.rs","byte_start":385,"byte_end":413,"line_start":20,"line_end":20,"column_start":5,"column_end":33,"is_primary":true,"text":[{"text":" pub fn new(n: usize) -> Self {","highlight_start":5,"highlight_end":33}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for an associated function\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\percolation.rs:20:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m20\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn new(n: usize) -> Self {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a method","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\percolation.rs","byte_start":1314,"byte_end":1408,"line_start":56,"line_end":56,"column_start":5,"column_end":99,"is_primary":true,"text":[{"text":" pub fn compute_rigidity(&mut self, edges: &[(usize, usize)], n_nodes: usize) -> RigidityResult {","highlight_start":5,"highlight_end":99}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a method\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\percolation.rs:56:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m56\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn compute_rigidity(&mut self, edges: &[(usize, usize)], n_nodes: usize) -> RigidityResult {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\gauge.rs","byte_start":73,"byte_end":99,"line_start":5,"line_end":5,"column_start":1,"column_end":27,"is_primary":true,"text":[{"text":"pub struct GaugeConnection {","highlight_start":1,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\gauge.rs:5:1\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m5\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub struct GaugeConnection {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for an associated function","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\gauge.rs","byte_start":159,"byte_end":195,"line_start":10,"line_end":10,"column_start":5,"column_end":41,"is_primary":true,"text":[{"text":" pub fn new(tiles: Vec) -> Self {","highlight_start":5,"highlight_end":41}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for an associated function\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\gauge.rs:10:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m10\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn new(tiles: Vec) -> Self {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a method","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\gauge.rs","byte_start":236,"byte_end":314,"line_start":14,"line_end":14,"column_start":5,"column_end":83,"is_primary":true,"text":[{"text":" pub fn parallel_transport(&self, vector: [f32; 3], path: &[usize]) -> [f32; 3] {","highlight_start":5,"highlight_end":83}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a method\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\gauge.rs:14:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m14\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn parallel_transport(&self, vector: [f32; 3], path: &[usize]) -> [f32; 3] {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"36 warnings emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: 36 warnings emitted\u001b[0m\n\n"} diff --git a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-315799bf3bbc382a/dep-example-bench b/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-315799bf3bbc382a/dep-example-bench deleted file mode 100644 index 3e5e791..0000000 Binary files a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-315799bf3bbc382a/dep-example-bench and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-315799bf3bbc382a/dep-example-bench_profiled b/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-315799bf3bbc382a/dep-example-bench_profiled deleted file mode 100644 index ba68e48..0000000 Binary files a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-315799bf3bbc382a/dep-example-bench_profiled and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-315799bf3bbc382a/example-bench b/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-315799bf3bbc382a/example-bench deleted file mode 100644 index 0705df4..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-315799bf3bbc382a/example-bench +++ /dev/null @@ -1 +0,0 @@ -10940c18e540e449 \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-315799bf3bbc382a/example-bench.json b/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-315799bf3bbc382a/example-bench.json deleted file mode 100644 index 6e62f10..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-315799bf3bbc382a/example-bench.json +++ /dev/null @@ -1 +0,0 @@ -{"rustc":7895727629726570510,"features":"[\"default\"]","declared_features":"[\"default\", \"simd\"]","target":3752888942889443239,"profile":5652530863572545030,"path":2295463836968006653,"deps":[[13028347654821068067,"constraint_theory_core",false,6623601901847656842],[13208667028893622512,"rand",false,1405538607803146377]],"local":[{"CheckDepInfo":{"dep_info":"release\\.fingerprint\\constraint-theory-core-315799bf3bbc382a\\dep-example-bench","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0} \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-315799bf3bbc382a/example-bench_profiled b/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-315799bf3bbc382a/example-bench_profiled deleted file mode 100644 index 65068d1..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-315799bf3bbc382a/example-bench_profiled +++ /dev/null @@ -1 +0,0 @@ -196a4baa5a285e3a \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-315799bf3bbc382a/example-bench_profiled.json b/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-315799bf3bbc382a/example-bench_profiled.json deleted file mode 100644 index d8aa10e..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-315799bf3bbc382a/example-bench_profiled.json +++ /dev/null @@ -1 +0,0 @@ -{"rustc":7895727629726570510,"features":"[\"default\"]","declared_features":"[\"default\", \"simd\"]","target":1296066707359061448,"profile":5652530863572545030,"path":4624613034228691208,"deps":[[13028347654821068067,"constraint_theory_core",false,6623601901847656842],[13208667028893622512,"rand",false,1405538607803146377]],"local":[{"CheckDepInfo":{"dep_info":"release\\.fingerprint\\constraint-theory-core-315799bf3bbc382a\\dep-example-bench_profiled","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0} \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-315799bf3bbc382a/invoked.timestamp b/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-315799bf3bbc382a/invoked.timestamp deleted file mode 100644 index e00328d..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-315799bf3bbc382a/invoked.timestamp +++ /dev/null @@ -1 +0,0 @@ -This file has an mtime of when this was started. \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-4833f953f787b97f/dep-lib-constraint_theory_core b/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-4833f953f787b97f/dep-lib-constraint_theory_core deleted file mode 100644 index ec2dbd8..0000000 Binary files a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-4833f953f787b97f/dep-lib-constraint_theory_core and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-4833f953f787b97f/invoked.timestamp b/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-4833f953f787b97f/invoked.timestamp deleted file mode 100644 index e00328d..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-4833f953f787b97f/invoked.timestamp +++ /dev/null @@ -1 +0,0 @@ -This file has an mtime of when this was started. \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-4833f953f787b97f/lib-constraint_theory_core b/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-4833f953f787b97f/lib-constraint_theory_core deleted file mode 100644 index 155a2c5..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-4833f953f787b97f/lib-constraint_theory_core +++ /dev/null @@ -1 +0,0 @@ -8a393b1dd6c2eb5b \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-4833f953f787b97f/lib-constraint_theory_core.json b/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-4833f953f787b97f/lib-constraint_theory_core.json deleted file mode 100644 index f296b1e..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-4833f953f787b97f/lib-constraint_theory_core.json +++ /dev/null @@ -1 +0,0 @@ -{"rustc":7895727629726570510,"features":"[\"default\"]","declared_features":"[\"default\", \"simd\"]","target":11166341763917188602,"profile":11856702683587007857,"path":10763286916239946207,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release\\.fingerprint\\constraint-theory-core-4833f953f787b97f\\dep-lib-constraint_theory_core","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0} \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-5bcdf1f598170a9a/dep-lib-constraint_theory_core b/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-5bcdf1f598170a9a/dep-lib-constraint_theory_core deleted file mode 100644 index d7566d8..0000000 Binary files a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-5bcdf1f598170a9a/dep-lib-constraint_theory_core and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-5bcdf1f598170a9a/invoked.timestamp b/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-5bcdf1f598170a9a/invoked.timestamp deleted file mode 100644 index e00328d..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-5bcdf1f598170a9a/invoked.timestamp +++ /dev/null @@ -1 +0,0 @@ -This file has an mtime of when this was started. \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-5bcdf1f598170a9a/lib-constraint_theory_core b/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-5bcdf1f598170a9a/lib-constraint_theory_core deleted file mode 100644 index 03dab7c..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-5bcdf1f598170a9a/lib-constraint_theory_core +++ /dev/null @@ -1 +0,0 @@ -ed1a930de452c92f \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-5bcdf1f598170a9a/lib-constraint_theory_core.json b/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-5bcdf1f598170a9a/lib-constraint_theory_core.json deleted file mode 100644 index 498c87d..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-5bcdf1f598170a9a/lib-constraint_theory_core.json +++ /dev/null @@ -1 +0,0 @@ -{"rustc":7895727629726570510,"features":"[]","declared_features":"[]","target":11166341763917188602,"profile":16503403049695105087,"path":10763286916239946207,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release\\.fingerprint\\constraint-theory-core-5bcdf1f598170a9a\\dep-lib-constraint_theory_core","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0} \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-5bcdf1f598170a9a/output-lib-constraint_theory_core b/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-5bcdf1f598170a9a/output-lib-constraint_theory_core deleted file mode 100644 index 8e3438b..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-5bcdf1f598170a9a/output-lib-constraint_theory_core +++ /dev/null @@ -1,37 +0,0 @@ -{"$message_type":"diagnostic","message":"missing documentation for a struct","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":82,"byte_end":110,"line_start":4,"line_end":4,"column_start":1,"column_end":29,"is_primary":true,"text":[{"text":"pub struct PythagoreanTriple {","highlight_start":1,"highlight_end":29}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"the lint level is defined here","code":null,"level":"note","spans":[{"file_name":"src\\lib.rs","byte_start":754,"byte_end":766,"line_start":28,"line_end":28,"column_start":9,"column_end":21,"is_primary":true,"text":[{"text":"#![warn(missing_docs)]","highlight_start":9,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:4:1\n \u001b[1m\u001b[96m|\u001b[0m\n \u001b[1m\u001b[96m4\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub struct PythagoreanTriple {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[92mnote\u001b[0m: the lint level is defined here\n \u001b[1m\u001b[96m--> \u001b[0msrc\\lib.rs:28:9\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m28\u001b[0m \u001b[1m\u001b[96m|\u001b[0m #![warn(missing_docs)]\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[92m^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":118,"byte_end":128,"line_start":5,"line_end":5,"column_start":5,"column_end":15,"is_primary":true,"text":[{"text":" pub a: f32,","highlight_start":5,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:5:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m5\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub a: f32,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":135,"byte_end":145,"line_start":6,"line_end":6,"column_start":5,"column_end":15,"is_primary":true,"text":[{"text":" pub b: f32,","highlight_start":5,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:6:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m6\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub b: f32,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":152,"byte_end":162,"line_start":7,"line_end":7,"column_start":5,"column_end":15,"is_primary":true,"text":[{"text":" pub c: f32,","highlight_start":5,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:7:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m7\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub c: f32,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for an associated function","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":200,"byte_end":242,"line_start":11,"line_end":11,"column_start":5,"column_end":47,"is_primary":true,"text":[{"text":" pub fn new(a: f32, b: f32, c: f32) -> Self {","highlight_start":5,"highlight_end":47}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for an associated function\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:11:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m11\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn new(a: f32, b: f32, c: f32) -> Self {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a method","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":285,"byte_end":315,"line_start":15,"line_end":15,"column_start":5,"column_end":35,"is_primary":true,"text":[{"text":" pub fn is_valid(&self) -> bool {","highlight_start":5,"highlight_end":35}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a method\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:15:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m15\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn is_valid(&self) -> bool {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a method","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":408,"byte_end":443,"line_start":19,"line_end":19,"column_start":5,"column_end":40,"is_primary":true,"text":[{"text":" pub fn to_vector(&self) -> [f32; 2] {","highlight_start":5,"highlight_end":40}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a method\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:19:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m19\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn to_vector(&self) -> [f32; 2] {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":521,"byte_end":551,"line_start":25,"line_end":25,"column_start":1,"column_end":31,"is_primary":true,"text":[{"text":"pub struct PythagoreanManifold {","highlight_start":1,"highlight_end":31}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:25:1\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m25\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub struct PythagoreanManifold {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for an associated function","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":626,"byte_end":660,"line_start":30,"line_end":30,"column_start":5,"column_end":39,"is_primary":true,"text":[{"text":" pub fn new(density: usize) -> Self {","highlight_start":5,"highlight_end":39}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for an associated function\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:30:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m30\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn new(density: usize) -> Self {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a method","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":1524,"byte_end":1558,"line_start":58,"line_end":58,"column_start":5,"column_end":39,"is_primary":true,"text":[{"text":" pub fn state_count(&self) -> usize {","highlight_start":5,"highlight_end":39}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a method\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:58:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m58\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn state_count(&self) -> usize {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a method","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":1608,"byte_end":1663,"line_start":62,"line_end":62,"column_start":5,"column_end":60,"is_primary":true,"text":[{"text":" pub fn snap(&self, vector: [f32; 2]) -> ([f32; 2], f32) {","highlight_start":5,"highlight_end":60}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a method\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:62:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m62\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn snap(&self, vector: [f32; 2]) -> ([f32; 2], f32) {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a method","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":2378,"byte_end":2457,"line_start":88,"line_end":88,"column_start":5,"column_end":84,"is_primary":true,"text":[{"text":" pub fn snap_batch(&self, vectors: &[[f32; 2]], results: &mut [([f32; 2], f32)]) {","highlight_start":5,"highlight_end":84}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a method\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:88:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m88\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn snap_batch(&self, vectors: &[[f32; 2]], results: &mut [([f32; 2], f32)]) {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a function","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":2581,"byte_end":2661,"line_start":95,"line_end":95,"column_start":1,"column_end":81,"is_primary":true,"text":[{"text":"pub fn snap(manifold: &PythagoreanManifold, vector: [f32; 2]) -> ([f32; 2], f32) {","highlight_start":1,"highlight_end":81}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a function\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:95:1\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m95\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn snap(manifold: &PythagoreanManifold, vector: [f32; 2]) -> ([f32; 2], f32) {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for an associated function","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\curvature.rs","byte_start":190,"byte_end":243,"line_start":11,"line_end":11,"column_start":5,"column_end":58,"is_primary":true,"text":[{"text":" pub fn new(alpha: f32, target_curvature: f32) -> Self {","highlight_start":5,"highlight_end":58}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for an associated function\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\curvature.rs:11:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m11\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn new(alpha: f32, target_curvature: f32) -> Self {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for an associated function","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\curvature.rs","byte_start":338,"byte_end":362,"line_start":18,"line_end":18,"column_start":5,"column_end":29,"is_primary":true,"text":[{"text":" pub fn default() -> Self {","highlight_start":5,"highlight_end":29}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for an associated function\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\curvature.rs:18:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m18\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn default() -> Self {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a method","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\curvature.rs","byte_start":408,"byte_end":470,"line_start":22,"line_end":22,"column_start":5,"column_end":67,"is_primary":true,"text":[{"text":" pub fn evolve(&mut self, curvatures: &mut [f32], steps: usize) {","highlight_start":5,"highlight_end":67}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a method\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\curvature.rs:22:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m22\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn evolve(&mut self, curvatures: &mut [f32], steps: usize) {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a function","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\curvature.rs","byte_start":653,"byte_end":723,"line_start":31,"line_end":31,"column_start":1,"column_end":71,"is_primary":true,"text":[{"text":"pub fn ricci_flow_step(curvature: f32, alpha: f32, target: f32) -> f32 {","highlight_start":1,"highlight_end":71}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a function\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\curvature.rs:31:1\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m31\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn ricci_flow_step(curvature: f32, alpha: f32, target: f32) -> f32 {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\cohomology.rs","byte_start":36,"byte_end":63,"line_start":3,"line_end":3,"column_start":1,"column_end":28,"is_primary":true,"text":[{"text":"pub struct CohomologyResult {","highlight_start":1,"highlight_end":28}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\cohomology.rs:3:1\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m3\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub struct CohomologyResult {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\cohomology.rs","byte_start":71,"byte_end":88,"line_start":4,"line_end":4,"column_start":5,"column_end":22,"is_primary":true,"text":[{"text":" pub h0_dim: usize,","highlight_start":5,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\cohomology.rs:4:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m4\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub h0_dim: usize,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\cohomology.rs","byte_start":95,"byte_end":112,"line_start":5,"line_end":5,"column_start":5,"column_end":22,"is_primary":true,"text":[{"text":" pub h1_dim: usize,","highlight_start":5,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\cohomology.rs:5:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m5\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub h1_dim: usize,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\cohomology.rs","byte_start":119,"byte_end":140,"line_start":6,"line_end":6,"column_start":5,"column_end":26,"is_primary":true,"text":[{"text":" pub n_vertices: usize,","highlight_start":5,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\cohomology.rs:6:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m6\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub n_vertices: usize,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\cohomology.rs","byte_start":147,"byte_end":165,"line_start":7,"line_end":7,"column_start":5,"column_end":23,"is_primary":true,"text":[{"text":" pub n_edges: usize,","highlight_start":5,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\cohomology.rs:7:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m7\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub n_edges: usize,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\cohomology.rs","byte_start":173,"byte_end":198,"line_start":10,"line_end":10,"column_start":1,"column_end":26,"is_primary":true,"text":[{"text":"pub struct FastCohomology;","highlight_start":1,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\cohomology.rs:10:1\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m10\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub struct FastCohomology;\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for an associated function","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\cohomology.rs","byte_start":230,"byte_end":320,"line_start":13,"line_end":13,"column_start":5,"column_end":95,"is_primary":true,"text":[{"text":" pub fn compute(n_vertices: usize, n_edges: usize, n_components: usize) -> CohomologyResult {","highlight_start":5,"highlight_end":95}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for an associated function\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\cohomology.rs:13:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m13\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn compute(n_vertices: usize, n_edges: usize, n_components: usize) -> CohomologyResult {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\percolation.rs","byte_start":84,"byte_end":109,"line_start":5,"line_end":5,"column_start":1,"column_end":26,"is_primary":true,"text":[{"text":"pub struct RigidityResult {","highlight_start":1,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\percolation.rs:5:1\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m5\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub struct RigidityResult {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\percolation.rs","byte_start":117,"byte_end":135,"line_start":6,"line_end":6,"column_start":5,"column_end":23,"is_primary":true,"text":[{"text":" pub is_rigid: bool,","highlight_start":5,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\percolation.rs:6:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m6\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub is_rigid: bool,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\percolation.rs","byte_start":142,"byte_end":157,"line_start":7,"line_end":7,"column_start":5,"column_end":20,"is_primary":true,"text":[{"text":" pub rank: usize,","highlight_start":5,"highlight_end":20}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\percolation.rs:7:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m7\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub rank: usize,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\percolation.rs","byte_start":164,"byte_end":185,"line_start":8,"line_end":8,"column_start":5,"column_end":26,"is_primary":true,"text":[{"text":" pub deficiency: usize,","highlight_start":5,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\percolation.rs:8:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m8\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub deficiency: usize,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\percolation.rs","byte_start":192,"byte_end":213,"line_start":9,"line_end":9,"column_start":5,"column_end":26,"is_primary":true,"text":[{"text":" pub n_clusters: usize,","highlight_start":5,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\percolation.rs:9:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m9\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub n_clusters: usize,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\percolation.rs","byte_start":220,"byte_end":243,"line_start":10,"line_end":10,"column_start":5,"column_end":28,"is_primary":true,"text":[{"text":" pub rigid_fraction: f32,","highlight_start":5,"highlight_end":28}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\percolation.rs:10:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m10\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub rigid_fraction: f32,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\percolation.rs","byte_start":251,"byte_end":277,"line_start":13,"line_end":13,"column_start":1,"column_end":27,"is_primary":true,"text":[{"text":"pub struct FastPercolation {","highlight_start":1,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\percolation.rs:13:1\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m13\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub struct FastPercolation {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for an associated function","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\percolation.rs","byte_start":385,"byte_end":413,"line_start":20,"line_end":20,"column_start":5,"column_end":33,"is_primary":true,"text":[{"text":" pub fn new(n: usize) -> Self {","highlight_start":5,"highlight_end":33}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for an associated function\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\percolation.rs:20:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m20\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn new(n: usize) -> Self {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a method","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\percolation.rs","byte_start":1314,"byte_end":1408,"line_start":56,"line_end":56,"column_start":5,"column_end":99,"is_primary":true,"text":[{"text":" pub fn compute_rigidity(&mut self, edges: &[(usize, usize)], n_nodes: usize) -> RigidityResult {","highlight_start":5,"highlight_end":99}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a method\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\percolation.rs:56:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m56\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn compute_rigidity(&mut self, edges: &[(usize, usize)], n_nodes: usize) -> RigidityResult {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\gauge.rs","byte_start":73,"byte_end":99,"line_start":5,"line_end":5,"column_start":1,"column_end":27,"is_primary":true,"text":[{"text":"pub struct GaugeConnection {","highlight_start":1,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\gauge.rs:5:1\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m5\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub struct GaugeConnection {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for an associated function","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\gauge.rs","byte_start":159,"byte_end":195,"line_start":10,"line_end":10,"column_start":5,"column_end":41,"is_primary":true,"text":[{"text":" pub fn new(tiles: Vec) -> Self {","highlight_start":5,"highlight_end":41}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for an associated function\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\gauge.rs:10:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m10\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn new(tiles: Vec) -> Self {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a method","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\gauge.rs","byte_start":236,"byte_end":314,"line_start":14,"line_end":14,"column_start":5,"column_end":83,"is_primary":true,"text":[{"text":" pub fn parallel_transport(&self, vector: [f32; 3], path: &[usize]) -> [f32; 3] {","highlight_start":5,"highlight_end":83}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a method\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\gauge.rs:14:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m14\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn parallel_transport(&self, vector: [f32; 3], path: &[usize]) -> [f32; 3] {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"36 warnings emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: 36 warnings emitted\u001b[0m\n\n"} diff --git a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-9b914443d6f32edb/dep-test-lib-constraint_theory_core b/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-9b914443d6f32edb/dep-test-lib-constraint_theory_core deleted file mode 100644 index e5900c5..0000000 Binary files a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-9b914443d6f32edb/dep-test-lib-constraint_theory_core and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-9b914443d6f32edb/invoked.timestamp b/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-9b914443d6f32edb/invoked.timestamp deleted file mode 100644 index e00328d..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-9b914443d6f32edb/invoked.timestamp +++ /dev/null @@ -1 +0,0 @@ -This file has an mtime of when this was started. \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-9b914443d6f32edb/output-test-lib-constraint_theory_core b/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-9b914443d6f32edb/output-test-lib-constraint_theory_core deleted file mode 100644 index 1e81eae..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-9b914443d6f32edb/output-test-lib-constraint_theory_core +++ /dev/null @@ -1,40 +0,0 @@ -{"$message_type":"diagnostic","message":"unused import: `snap`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src\\edge_case_tests.rs","byte_start":403,"byte_end":407,"line_start":11,"line_end":11,"column_start":27,"column_end":31,"is_primary":true,"text":[{"text":" use crate::manifold::{snap, PythagoreanManifold, PythagoreanTriple};","highlight_start":27,"highlight_end":31}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"remove the unused import","code":null,"level":"help","spans":[{"file_name":"src\\edge_case_tests.rs","byte_start":403,"byte_end":409,"line_start":11,"line_end":11,"column_start":27,"column_end":33,"is_primary":true,"text":[{"text":" use crate::manifold::{snap, PythagoreanManifold, PythagoreanTriple};","highlight_start":27,"highlight_end":33}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: unused import: `snap`\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\edge_case_tests.rs:11:27\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m11\u001b[0m \u001b[1m\u001b[96m|\u001b[0m use crate::manifold::{snap, PythagoreanManifold, PythagoreanTriple};\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^\u001b[0m\n \u001b[1m\u001b[96m|\u001b[0m\n \u001b[1m\u001b[96m= \u001b[0m\u001b[1m\u001b[97mnote\u001b[0m: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default\n\n"} -{"$message_type":"diagnostic","message":"unused variable: `snapped`","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"src\\edge_case_tests.rs","byte_start":2830,"byte_end":2837,"line_start":83,"line_end":83,"column_start":18,"column_end":25,"is_primary":true,"text":[{"text":" let (snapped, noise) = manifold.snap(vec);","highlight_start":18,"highlight_end":25}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"if this is intentional, prefix it with an underscore","code":null,"level":"help","spans":[{"file_name":"src\\edge_case_tests.rs","byte_start":2830,"byte_end":2837,"line_start":83,"line_end":83,"column_start":18,"column_end":25,"is_primary":true,"text":[{"text":" let (snapped, noise) = manifold.snap(vec);","highlight_start":18,"highlight_end":25}],"label":null,"suggested_replacement":"_snapped","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: unused variable: `snapped`\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\edge_case_tests.rs:83:18\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m83\u001b[0m \u001b[1m\u001b[96m|\u001b[0m let (snapped, noise) = manifold.snap(vec);\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^\u001b[0m \u001b[1m\u001b[93mhelp: if this is intentional, prefix it with an underscore: `_snapped`\u001b[0m\n \u001b[1m\u001b[96m|\u001b[0m\n \u001b[1m\u001b[96m= \u001b[0m\u001b[1m\u001b[97mnote\u001b[0m: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default\n\n"} -{"$message_type":"diagnostic","message":"unused variable: `snapped`","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"src\\edge_case_tests.rs","byte_start":3587,"byte_end":3594,"line_start":109,"line_end":109,"column_start":14,"column_end":21,"is_primary":true,"text":[{"text":" let (snapped, noise) = manifold.snap([0.6, 0.8]);","highlight_start":14,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if this is intentional, prefix it with an underscore","code":null,"level":"help","spans":[{"file_name":"src\\edge_case_tests.rs","byte_start":3587,"byte_end":3594,"line_start":109,"line_end":109,"column_start":14,"column_end":21,"is_primary":true,"text":[{"text":" let (snapped, noise) = manifold.snap([0.6, 0.8]);","highlight_start":14,"highlight_end":21}],"label":null,"suggested_replacement":"_snapped","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: unused variable: `snapped`\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\edge_case_tests.rs:109:14\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m109\u001b[0m \u001b[1m\u001b[96m|\u001b[0m let (snapped, noise) = manifold.snap([0.6, 0.8]);\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^\u001b[0m \u001b[1m\u001b[93mhelp: if this is intentional, prefix it with an underscore: `_snapped`\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\cohomology.rs","byte_start":34,"byte_end":61,"line_start":3,"line_end":3,"column_start":1,"column_end":28,"is_primary":true,"text":[{"text":"pub struct CohomologyResult {","highlight_start":1,"highlight_end":28}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"the lint level is defined here","code":null,"level":"note","spans":[{"file_name":"src\\lib.rs","byte_start":1258,"byte_end":1270,"line_start":44,"line_end":44,"column_start":9,"column_end":21,"is_primary":true,"text":[{"text":"#![warn(missing_docs)]","highlight_start":9,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\cohomology.rs:3:1\n \u001b[1m\u001b[96m|\u001b[0m\n \u001b[1m\u001b[96m3\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub struct CohomologyResult {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[92mnote\u001b[0m: the lint level is defined here\n \u001b[1m\u001b[96m--> \u001b[0msrc\\lib.rs:44:9\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m44\u001b[0m \u001b[1m\u001b[96m|\u001b[0m #![warn(missing_docs)]\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[92m^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\cohomology.rs","byte_start":68,"byte_end":85,"line_start":4,"line_end":4,"column_start":5,"column_end":22,"is_primary":true,"text":[{"text":" pub h0_dim: usize,","highlight_start":5,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\cohomology.rs:4:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m4\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub h0_dim: usize,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\cohomology.rs","byte_start":91,"byte_end":108,"line_start":5,"line_end":5,"column_start":5,"column_end":22,"is_primary":true,"text":[{"text":" pub h1_dim: usize,","highlight_start":5,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\cohomology.rs:5:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m5\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub h1_dim: usize,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\cohomology.rs","byte_start":114,"byte_end":135,"line_start":6,"line_end":6,"column_start":5,"column_end":26,"is_primary":true,"text":[{"text":" pub n_vertices: usize,","highlight_start":5,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\cohomology.rs:6:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m6\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub n_vertices: usize,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\cohomology.rs","byte_start":141,"byte_end":159,"line_start":7,"line_end":7,"column_start":5,"column_end":23,"is_primary":true,"text":[{"text":" pub n_edges: usize,","highlight_start":5,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\cohomology.rs:7:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m7\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub n_edges: usize,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\cohomology.rs","byte_start":164,"byte_end":189,"line_start":10,"line_end":10,"column_start":1,"column_end":26,"is_primary":true,"text":[{"text":"pub struct FastCohomology;","highlight_start":1,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\cohomology.rs:10:1\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m10\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub struct FastCohomology;\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for an associated function","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\cohomology.rs","byte_start":218,"byte_end":308,"line_start":13,"line_end":13,"column_start":5,"column_end":95,"is_primary":true,"text":[{"text":" pub fn compute(n_vertices: usize, n_edges: usize, n_components: usize) -> CohomologyResult {","highlight_start":5,"highlight_end":95}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for an associated function\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\cohomology.rs:13:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m13\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn compute(n_vertices: usize, n_edges: usize, n_components: usize) -> CohomologyResult {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for an associated function","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\curvature.rs","byte_start":180,"byte_end":233,"line_start":11,"line_end":11,"column_start":5,"column_end":58,"is_primary":true,"text":[{"text":" pub fn new(alpha: f32, target_curvature: f32) -> Self {","highlight_start":5,"highlight_end":58}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for an associated function\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\curvature.rs:11:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m11\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn new(alpha: f32, target_curvature: f32) -> Self {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for an associated function","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\curvature.rs","byte_start":321,"byte_end":345,"line_start":18,"line_end":18,"column_start":5,"column_end":29,"is_primary":true,"text":[{"text":" pub fn default() -> Self {","highlight_start":5,"highlight_end":29}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for an associated function\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\curvature.rs:18:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m18\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn default() -> Self {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a method","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\curvature.rs","byte_start":387,"byte_end":449,"line_start":22,"line_end":22,"column_start":5,"column_end":67,"is_primary":true,"text":[{"text":" pub fn evolve(&mut self, curvatures: &mut [f32], steps: usize) {","highlight_start":5,"highlight_end":67}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a method\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\curvature.rs:22:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m22\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn evolve(&mut self, curvatures: &mut [f32], steps: usize) {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a function","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\curvature.rs","byte_start":623,"byte_end":693,"line_start":31,"line_end":31,"column_start":1,"column_end":71,"is_primary":true,"text":[{"text":"pub fn ricci_flow_step(curvature: f32, alpha: f32, target: f32) -> f32 {","highlight_start":1,"highlight_end":71}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a function\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\curvature.rs:31:1\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m31\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn ricci_flow_step(curvature: f32, alpha: f32, target: f32) -> f32 {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\gauge.rs","byte_start":69,"byte_end":95,"line_start":5,"line_end":5,"column_start":1,"column_end":27,"is_primary":true,"text":[{"text":"pub struct GaugeConnection {","highlight_start":1,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\gauge.rs:5:1\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m5\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub struct GaugeConnection {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for an associated function","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\gauge.rs","byte_start":150,"byte_end":186,"line_start":10,"line_end":10,"column_start":5,"column_end":41,"is_primary":true,"text":[{"text":" pub fn new(tiles: Vec) -> Self {","highlight_start":5,"highlight_end":41}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for an associated function\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\gauge.rs:10:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m10\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn new(tiles: Vec) -> Self {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a method","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\gauge.rs","byte_start":223,"byte_end":301,"line_start":14,"line_end":14,"column_start":5,"column_end":83,"is_primary":true,"text":[{"text":" pub fn parallel_transport(&self, vector: [f32; 3], path: &[usize]) -> [f32; 3] {","highlight_start":5,"highlight_end":83}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a method\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\gauge.rs:14:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m14\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn parallel_transport(&self, vector: [f32; 3], path: &[usize]) -> [f32; 3] {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":545,"byte_end":573,"line_start":16,"line_end":16,"column_start":1,"column_end":29,"is_primary":true,"text":[{"text":"pub struct PythagoreanTriple {","highlight_start":1,"highlight_end":29}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:16:1\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m16\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub struct PythagoreanTriple {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":581,"byte_end":591,"line_start":17,"line_end":17,"column_start":5,"column_end":15,"is_primary":true,"text":[{"text":" pub a: f32,","highlight_start":5,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:17:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m17\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub a: f32,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":598,"byte_end":608,"line_start":18,"line_end":18,"column_start":5,"column_end":15,"is_primary":true,"text":[{"text":" pub b: f32,","highlight_start":5,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:18:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m18\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub b: f32,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":615,"byte_end":625,"line_start":19,"line_end":19,"column_start":5,"column_end":15,"is_primary":true,"text":[{"text":" pub c: f32,","highlight_start":5,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:19:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m19\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub c: f32,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for an associated function","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":663,"byte_end":705,"line_start":23,"line_end":23,"column_start":5,"column_end":47,"is_primary":true,"text":[{"text":" pub fn new(a: f32, b: f32, c: f32) -> Self {","highlight_start":5,"highlight_end":47}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for an associated function\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:23:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m23\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn new(a: f32, b: f32, c: f32) -> Self {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a method","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":748,"byte_end":778,"line_start":27,"line_end":27,"column_start":5,"column_end":35,"is_primary":true,"text":[{"text":" pub fn is_valid(&self) -> bool {","highlight_start":5,"highlight_end":35}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a method\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:27:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m27\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn is_valid(&self) -> bool {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a method","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":871,"byte_end":906,"line_start":31,"line_end":31,"column_start":5,"column_end":40,"is_primary":true,"text":[{"text":" pub fn to_vector(&self) -> [f32; 2] {","highlight_start":5,"highlight_end":40}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a method\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:31:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m31\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn to_vector(&self) -> [f32; 2] {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":966,"byte_end":996,"line_start":36,"line_end":36,"column_start":1,"column_end":31,"is_primary":true,"text":[{"text":"pub struct PythagoreanManifold {","highlight_start":1,"highlight_end":31}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:36:1\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m36\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub struct PythagoreanManifold {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for an associated function","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":1475,"byte_end":1509,"line_start":54,"line_end":54,"column_start":5,"column_end":39,"is_primary":true,"text":[{"text":" pub fn new(density: usize) -> Self {","highlight_start":5,"highlight_end":39}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for an associated function\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:54:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m54\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn new(density: usize) -> Self {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a method","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":2533,"byte_end":2567,"line_start":88,"line_end":88,"column_start":5,"column_end":39,"is_primary":true,"text":[{"text":" pub fn state_count(&self) -> usize {","highlight_start":5,"highlight_end":39}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a method\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:88:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m88\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn state_count(&self) -> usize {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a method","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":2762,"byte_end":2817,"line_start":97,"line_end":97,"column_start":5,"column_end":60,"is_primary":true,"text":[{"text":" pub fn snap(&self, vector: [f32; 2]) -> ([f32; 2], f32) {","highlight_start":5,"highlight_end":60}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a method\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:97:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m97\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn snap(&self, vector: [f32; 2]) -> ([f32; 2], f32) {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a method","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":5161,"byte_end":5240,"line_start":163,"line_end":163,"column_start":5,"column_end":84,"is_primary":true,"text":[{"text":" pub fn snap_batch(&self, vectors: &[[f32; 2]], results: &mut [([f32; 2], f32)]) {","highlight_start":5,"highlight_end":84}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a method\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:163:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m163\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn snap_batch(&self, vectors: &[[f32; 2]], results: &mut [([f32; 2], f32)]) {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a function","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":5364,"byte_end":5444,"line_start":170,"line_end":170,"column_start":1,"column_end":81,"is_primary":true,"text":[{"text":"pub fn snap(manifold: &PythagoreanManifold, vector: [f32; 2]) -> ([f32; 2], f32) {","highlight_start":1,"highlight_end":81}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a function\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:170:1\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m170\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn snap(manifold: &PythagoreanManifold, vector: [f32; 2]) -> ([f32; 2], f32) {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\percolation.rs","byte_start":80,"byte_end":105,"line_start":5,"line_end":5,"column_start":1,"column_end":26,"is_primary":true,"text":[{"text":"pub struct RigidityResult {","highlight_start":1,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\percolation.rs:5:1\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m5\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub struct RigidityResult {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\percolation.rs","byte_start":112,"byte_end":130,"line_start":6,"line_end":6,"column_start":5,"column_end":23,"is_primary":true,"text":[{"text":" pub is_rigid: bool,","highlight_start":5,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\percolation.rs:6:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m6\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub is_rigid: bool,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\percolation.rs","byte_start":136,"byte_end":151,"line_start":7,"line_end":7,"column_start":5,"column_end":20,"is_primary":true,"text":[{"text":" pub rank: usize,","highlight_start":5,"highlight_end":20}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\percolation.rs:7:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m7\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub rank: usize,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\percolation.rs","byte_start":157,"byte_end":178,"line_start":8,"line_end":8,"column_start":5,"column_end":26,"is_primary":true,"text":[{"text":" pub deficiency: usize,","highlight_start":5,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\percolation.rs:8:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m8\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub deficiency: usize,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\percolation.rs","byte_start":184,"byte_end":205,"line_start":9,"line_end":9,"column_start":5,"column_end":26,"is_primary":true,"text":[{"text":" pub n_clusters: usize,","highlight_start":5,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\percolation.rs:9:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m9\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub n_clusters: usize,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct field","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\percolation.rs","byte_start":211,"byte_end":234,"line_start":10,"line_end":10,"column_start":5,"column_end":28,"is_primary":true,"text":[{"text":" pub rigid_fraction: f32,","highlight_start":5,"highlight_end":28}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct field\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\percolation.rs:10:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m10\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub rigid_fraction: f32,\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a struct","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\percolation.rs","byte_start":239,"byte_end":265,"line_start":13,"line_end":13,"column_start":1,"column_end":27,"is_primary":true,"text":[{"text":"pub struct FastPercolation {","highlight_start":1,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a struct\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\percolation.rs:13:1\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m13\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub struct FastPercolation {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for an associated function","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\percolation.rs","byte_start":366,"byte_end":394,"line_start":20,"line_end":20,"column_start":5,"column_end":33,"is_primary":true,"text":[{"text":" pub fn new(n: usize) -> Self {","highlight_start":5,"highlight_end":33}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for an associated function\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\percolation.rs:20:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m20\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn new(n: usize) -> Self {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"missing documentation for a method","code":{"code":"missing_docs","explanation":null},"level":"warning","spans":[{"file_name":"src\\percolation.rs","byte_start":1259,"byte_end":1353,"line_start":56,"line_end":56,"column_start":5,"column_end":99,"is_primary":true,"text":[{"text":" pub fn compute_rigidity(&mut self, edges: &[(usize, usize)], n_nodes: usize) -> RigidityResult {","highlight_start":5,"highlight_end":99}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: missing documentation for a method\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\percolation.rs:56:5\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m56\u001b[0m \u001b[1m\u001b[96m|\u001b[0m pub fn compute_rigidity(&mut self, edges: &[(usize, usize)], n_nodes: usize) -> RigidityResult {\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"39 warnings emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: 39 warnings emitted\u001b[0m\n\n"} diff --git a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-9b914443d6f32edb/test-lib-constraint_theory_core b/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-9b914443d6f32edb/test-lib-constraint_theory_core deleted file mode 100644 index ca822d8..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-9b914443d6f32edb/test-lib-constraint_theory_core +++ /dev/null @@ -1 +0,0 @@ -6d1aa09b8d5b8fcd \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-9b914443d6f32edb/test-lib-constraint_theory_core.json b/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-9b914443d6f32edb/test-lib-constraint_theory_core.json deleted file mode 100644 index 5c67482..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-9b914443d6f32edb/test-lib-constraint_theory_core.json +++ /dev/null @@ -1 +0,0 @@ -{"rustc":7895727629726570510,"features":"[\"default\"]","declared_features":"[\"default\", \"simd\"]","target":11166341763917188602,"profile":1089839023192944656,"path":10763286916239946207,"deps":[[13208667028893622512,"rand",false,297934739456314445]],"local":[{"CheckDepInfo":{"dep_info":"release\\.fingerprint\\constraint-theory-core-9b914443d6f32edb\\dep-test-lib-constraint_theory_core","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0} \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-ad0e6a5e27730070/invoked.timestamp b/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-ad0e6a5e27730070/invoked.timestamp deleted file mode 100644 index e00328d..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-ad0e6a5e27730070/invoked.timestamp +++ /dev/null @@ -1 +0,0 @@ -This file has an mtime of when this was started. \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-ad0e6a5e27730070/output-test-lib-constraint_theory_core b/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-ad0e6a5e27730070/output-test-lib-constraint_theory_core deleted file mode 100644 index 6db3978..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/constraint-theory-core-ad0e6a5e27730070/output-test-lib-constraint_theory_core +++ /dev/null @@ -1,8 +0,0 @@ -{"$message_type":"diagnostic","message":"unresolved import `rand`","code":{"code":"E0432","explanation":"An import was unresolved.\n\nErroneous code example:\n\n```compile_fail,E0432\nuse something::Foo; // error: unresolved import `something::Foo`.\n```\n\nIn Rust 2015, paths in `use` statements are relative to the crate root. To\nimport items relative to the current and parent modules, use the `self::` and\n`super::` prefixes, respectively.\n\nIn Rust 2018 or later, paths in `use` statements are relative to the current\nmodule unless they begin with the name of a crate or a literal `crate::`, in\nwhich case they start from the crate root. As in Rust 2015 code, the `self::`\nand `super::` prefixes refer to the current and parent modules respectively.\n\nAlso verify that you didn't misspell the import name and that the import exists\nin the module from where you tried to import it. Example:\n\n```\nuse self::something::Foo; // Ok.\n\nmod something {\n pub struct Foo;\n}\n# fn main() {}\n```\n\nIf you tried to use a module from an external crate and are using Rust 2015,\nyou may have missed the `extern crate` declaration (which is usually placed in\nthe crate root):\n\n```edition2015\nextern crate core; // Required to use the `core` crate in Rust 2015.\n\nuse core::any;\n# fn main() {}\n```\n\nSince Rust 2018 the `extern crate` declaration is not required and\nyou can instead just `use` it:\n\n```edition2018\nuse core::any; // No extern crate required in Rust 2018.\n# fn main() {}\n```\n"},"level":"error","spans":[{"file_name":"src\\kdtree.rs","byte_start":11712,"byte_end":11716,"line_start":390,"line_end":390,"column_start":13,"column_end":17,"is_primary":true,"text":[{"text":" use rand::Rng;","highlight_start":13,"highlight_end":17}],"label":"use of unresolved module or unlinked crate `rand`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `rand`, use `cargo add rand` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0432]\u001b[0m\u001b[1m\u001b[97m: unresolved import `rand`\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\kdtree.rs:390:13\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m390\u001b[0m \u001b[1m\u001b[96m|\u001b[0m use rand::Rng;\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `rand`\u001b[0m\n \u001b[1m\u001b[96m|\u001b[0m\n \u001b[1m\u001b[96m= \u001b[0m\u001b[1m\u001b[97mhelp\u001b[0m: if you wanted to use a crate named `rand`, use `cargo add rand` to add it to your `Cargo.toml`\n\n"} -{"$message_type":"diagnostic","message":"failed to resolve: use of unresolved module or unlinked crate `rand`","code":{"code":"E0433","explanation":"An undeclared crate, module, or type was used.\n\nErroneous code example:\n\n```compile_fail,E0433\nlet map = HashMap::new();\n// error: failed to resolve: use of undeclared type `HashMap`\n```\n\nPlease verify you didn't misspell the type/module's name or that you didn't\nforget to import it:\n\n```\nuse std::collections::HashMap; // HashMap has been imported.\nlet map: HashMap = HashMap::new(); // So it can be used!\n```\n\nIf you've expected to use a crate name:\n\n```compile_fail\nuse ferris_wheel::BigO;\n// error: failed to resolve: use of undeclared module or unlinked crate\n```\n\nMake sure the crate has been added as a dependency in `Cargo.toml`.\n\nTo use a module from your current crate, add the `crate::` prefix to the path.\n"},"level":"error","spans":[{"file_name":"src\\kdtree.rs","byte_start":11746,"byte_end":11750,"line_start":392,"line_end":392,"column_start":23,"column_end":27,"is_primary":true,"text":[{"text":" let mut rng = rand::thread_rng();","highlight_start":23,"highlight_end":27}],"label":"use of unresolved module or unlinked crate `rand`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if you wanted to use a crate named `rand`, use `cargo add rand` to add it to your `Cargo.toml`","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[91merror[E0433]\u001b[0m\u001b[1m\u001b[97m: failed to resolve: use of unresolved module or unlinked crate `rand`\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\kdtree.rs:392:23\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m392\u001b[0m \u001b[1m\u001b[96m|\u001b[0m let mut rng = rand::thread_rng();\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[91m^^^^\u001b[0m \u001b[1m\u001b[91muse of unresolved module or unlinked crate `rand`\u001b[0m\n \u001b[1m\u001b[96m|\u001b[0m\n \u001b[1m\u001b[96m= \u001b[0m\u001b[1m\u001b[97mhelp\u001b[0m: if you wanted to use a crate named `rand`, use `cargo add rand` to add it to your `Cargo.toml`\n\n"} -{"$message_type":"diagnostic","message":"unused variable: `snapped`","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":6096,"byte_end":6103,"line_start":200,"line_end":200,"column_start":14,"column_end":21,"is_primary":true,"text":[{"text":" let (snapped, noise) = manifold.snap([0.6, 0.8]);","highlight_start":14,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"if this is intentional, prefix it with an underscore","code":null,"level":"help","spans":[{"file_name":"src\\manifold.rs","byte_start":6096,"byte_end":6103,"line_start":200,"line_end":200,"column_start":14,"column_end":21,"is_primary":true,"text":[{"text":" let (snapped, noise) = manifold.snap([0.6, 0.8]);","highlight_start":14,"highlight_end":21}],"label":null,"suggested_replacement":"_snapped","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: unused variable: `snapped`\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:200:14\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m200\u001b[0m \u001b[1m\u001b[96m|\u001b[0m let (snapped, noise) = manifold.snap([0.6, 0.8]);\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^\u001b[0m \u001b[1m\u001b[93mhelp: if this is intentional, prefix it with an underscore: `_snapped`\u001b[0m\n \u001b[1m\u001b[96m|\u001b[0m\n \u001b[1m\u001b[96m= \u001b[0m\u001b[1m\u001b[97mnote\u001b[0m: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default\n\n"} -{"$message_type":"diagnostic","message":"unused variable: `snapped`","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":6296,"byte_end":6303,"line_start":207,"line_end":207,"column_start":14,"column_end":21,"is_primary":true,"text":[{"text":" let (snapped, noise) = snap(&manifold, [0.6, 0.8]);","highlight_start":14,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if this is intentional, prefix it with an underscore","code":null,"level":"help","spans":[{"file_name":"src\\manifold.rs","byte_start":6296,"byte_end":6303,"line_start":207,"line_end":207,"column_start":14,"column_end":21,"is_primary":true,"text":[{"text":" let (snapped, noise) = snap(&manifold, [0.6, 0.8]);","highlight_start":14,"highlight_end":21}],"label":null,"suggested_replacement":"_snapped","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: unused variable: `snapped`\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:207:14\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m207\u001b[0m \u001b[1m\u001b[96m|\u001b[0m let (snapped, noise) = snap(&manifold, [0.6, 0.8]);\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^\u001b[0m \u001b[1m\u001b[93mhelp: if this is intentional, prefix it with an underscore: `_snapped`\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"unused variable: `snapped`","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"src\\manifold.rs","byte_start":8940,"byte_end":8947,"line_start":287,"line_end":287,"column_start":18,"column_end":25,"is_primary":true,"text":[{"text":" let (snapped, noise) = manifold.snap(vec);","highlight_start":18,"highlight_end":25}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"if this is intentional, prefix it with an underscore","code":null,"level":"help","spans":[{"file_name":"src\\manifold.rs","byte_start":8940,"byte_end":8947,"line_start":287,"line_end":287,"column_start":18,"column_end":25,"is_primary":true,"text":[{"text":" let (snapped, noise) = manifold.snap(vec);","highlight_start":18,"highlight_end":25}],"label":null,"suggested_replacement":"_snapped","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[1m\u001b[93mwarning\u001b[0m\u001b[1m\u001b[97m: unused variable: `snapped`\u001b[0m\n \u001b[1m\u001b[96m--> \u001b[0msrc\\manifold.rs:287:18\n \u001b[1m\u001b[96m|\u001b[0m\n\u001b[1m\u001b[96m287\u001b[0m \u001b[1m\u001b[96m|\u001b[0m let (snapped, noise) = manifold.snap(vec);\n \u001b[1m\u001b[96m|\u001b[0m \u001b[1m\u001b[93m^^^^^^^\u001b[0m \u001b[1m\u001b[93mhelp: if this is intentional, prefix it with an underscore: `_snapped`\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"aborting due to 2 previous errors; 3 warnings emitted","code":null,"level":"error","spans":[],"children":[],"rendered":"\u001b[1m\u001b[91merror\u001b[0m\u001b[1m\u001b[97m: aborting due to 2 previous errors; 3 warnings emitted\u001b[0m\n\n"} -{"$message_type":"diagnostic","message":"Some errors have detailed explanations: E0432, E0433.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"\u001b[1m\u001b[97mSome errors have detailed explanations: E0432, E0433.\u001b[0m\n"} -{"$message_type":"diagnostic","message":"For more information about an error, try `rustc --explain E0432`.","code":null,"level":"failure-note","spans":[],"children":[],"rendered":"\u001b[1m\u001b[97mFor more information about an error, try `rustc --explain E0432`.\u001b[0m\n"} diff --git a/crates/constraint-theory-core/target/release/.fingerprint/getrandom-a09550116161c490/dep-lib-getrandom b/crates/constraint-theory-core/target/release/.fingerprint/getrandom-a09550116161c490/dep-lib-getrandom deleted file mode 100644 index ec3cb8b..0000000 Binary files a/crates/constraint-theory-core/target/release/.fingerprint/getrandom-a09550116161c490/dep-lib-getrandom and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/.fingerprint/getrandom-a09550116161c490/invoked.timestamp b/crates/constraint-theory-core/target/release/.fingerprint/getrandom-a09550116161c490/invoked.timestamp deleted file mode 100644 index e00328d..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/getrandom-a09550116161c490/invoked.timestamp +++ /dev/null @@ -1 +0,0 @@ -This file has an mtime of when this was started. \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/getrandom-a09550116161c490/lib-getrandom b/crates/constraint-theory-core/target/release/.fingerprint/getrandom-a09550116161c490/lib-getrandom deleted file mode 100644 index 350d436..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/getrandom-a09550116161c490/lib-getrandom +++ /dev/null @@ -1 +0,0 @@ -848864707b009f80 \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/getrandom-a09550116161c490/lib-getrandom.json b/crates/constraint-theory-core/target/release/.fingerprint/getrandom-a09550116161c490/lib-getrandom.json deleted file mode 100644 index 5a0f59d..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/getrandom-a09550116161c490/lib-getrandom.json +++ /dev/null @@ -1 +0,0 @@ -{"rustc":7895727629726570510,"features":"[\"std\"]","declared_features":"[\"compiler_builtins\", \"core\", \"custom\", \"js\", \"js-sys\", \"linux_disable_fallback\", \"rdrand\", \"rustc-dep-of-std\", \"std\", \"test-in-browser\", \"wasm-bindgen\"]","target":16244099637825074703,"profile":13952719172529475294,"path":18096143030110002758,"deps":[[7667230146095136825,"cfg_if",false,15672686949653204661]],"local":[{"CheckDepInfo":{"dep_info":"release\\.fingerprint\\getrandom-a09550116161c490\\dep-lib-getrandom","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0} \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/ppv-lite86-c9bba1eeedf3d66b/dep-lib-ppv_lite86 b/crates/constraint-theory-core/target/release/.fingerprint/ppv-lite86-c9bba1eeedf3d66b/dep-lib-ppv_lite86 deleted file mode 100644 index ec3cb8b..0000000 Binary files a/crates/constraint-theory-core/target/release/.fingerprint/ppv-lite86-c9bba1eeedf3d66b/dep-lib-ppv_lite86 and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/.fingerprint/ppv-lite86-c9bba1eeedf3d66b/invoked.timestamp b/crates/constraint-theory-core/target/release/.fingerprint/ppv-lite86-c9bba1eeedf3d66b/invoked.timestamp deleted file mode 100644 index e00328d..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/ppv-lite86-c9bba1eeedf3d66b/invoked.timestamp +++ /dev/null @@ -1 +0,0 @@ -This file has an mtime of when this was started. \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/ppv-lite86-c9bba1eeedf3d66b/lib-ppv_lite86 b/crates/constraint-theory-core/target/release/.fingerprint/ppv-lite86-c9bba1eeedf3d66b/lib-ppv_lite86 deleted file mode 100644 index 2039159..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/ppv-lite86-c9bba1eeedf3d66b/lib-ppv_lite86 +++ /dev/null @@ -1 +0,0 @@ -aff7033a5e1db99a \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/ppv-lite86-c9bba1eeedf3d66b/lib-ppv_lite86.json b/crates/constraint-theory-core/target/release/.fingerprint/ppv-lite86-c9bba1eeedf3d66b/lib-ppv_lite86.json deleted file mode 100644 index 758445b..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/ppv-lite86-c9bba1eeedf3d66b/lib-ppv_lite86.json +++ /dev/null @@ -1 +0,0 @@ -{"rustc":7895727629726570510,"features":"[\"simd\", \"std\"]","declared_features":"[\"default\", \"no_simd\", \"simd\", \"std\"]","target":2607852365283500179,"profile":13952719172529475294,"path":6086122388587157779,"deps":[[17945577413884132710,"zerocopy",false,6334694872086458575]],"local":[{"CheckDepInfo":{"dep_info":"release\\.fingerprint\\ppv-lite86-c9bba1eeedf3d66b\\dep-lib-ppv_lite86","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0} \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/rand-0e54bbf5c1239e42/dep-lib-rand b/crates/constraint-theory-core/target/release/.fingerprint/rand-0e54bbf5c1239e42/dep-lib-rand deleted file mode 100644 index ec3cb8b..0000000 Binary files a/crates/constraint-theory-core/target/release/.fingerprint/rand-0e54bbf5c1239e42/dep-lib-rand and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/.fingerprint/rand-0e54bbf5c1239e42/invoked.timestamp b/crates/constraint-theory-core/target/release/.fingerprint/rand-0e54bbf5c1239e42/invoked.timestamp deleted file mode 100644 index e00328d..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/rand-0e54bbf5c1239e42/invoked.timestamp +++ /dev/null @@ -1 +0,0 @@ -This file has an mtime of when this was started. \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/rand-0e54bbf5c1239e42/lib-rand b/crates/constraint-theory-core/target/release/.fingerprint/rand-0e54bbf5c1239e42/lib-rand deleted file mode 100644 index 57df3d7..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/rand-0e54bbf5c1239e42/lib-rand +++ /dev/null @@ -1 +0,0 @@ -4dcc8a27117a2204 \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/rand-0e54bbf5c1239e42/lib-rand.json b/crates/constraint-theory-core/target/release/.fingerprint/rand-0e54bbf5c1239e42/lib-rand.json deleted file mode 100644 index 520c0a0..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/rand-0e54bbf5c1239e42/lib-rand.json +++ /dev/null @@ -1 +0,0 @@ -{"rustc":7895727629726570510,"features":"[\"alloc\", \"default\", \"getrandom\", \"libc\", \"rand_chacha\", \"std\", \"std_rng\"]","declared_features":"[\"alloc\", \"default\", \"getrandom\", \"libc\", \"log\", \"min_const_gen\", \"nightly\", \"packed_simd\", \"rand_chacha\", \"serde\", \"serde1\", \"simd_support\", \"small_rng\", \"std\", \"std_rng\"]","target":8827111241893198906,"profile":13952719172529475294,"path":10023394146126403822,"deps":[[1573238666360410412,"rand_chacha",false,14492150091664170443],[18130209639506977569,"rand_core",false,6964697863906215313]],"local":[{"CheckDepInfo":{"dep_info":"release\\.fingerprint\\rand-0e54bbf5c1239e42\\dep-lib-rand","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0} \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/rand_chacha-21bbd0cbc54481eb/dep-lib-rand_chacha b/crates/constraint-theory-core/target/release/.fingerprint/rand_chacha-21bbd0cbc54481eb/dep-lib-rand_chacha deleted file mode 100644 index ec3cb8b..0000000 Binary files a/crates/constraint-theory-core/target/release/.fingerprint/rand_chacha-21bbd0cbc54481eb/dep-lib-rand_chacha and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/.fingerprint/rand_chacha-21bbd0cbc54481eb/invoked.timestamp b/crates/constraint-theory-core/target/release/.fingerprint/rand_chacha-21bbd0cbc54481eb/invoked.timestamp deleted file mode 100644 index e00328d..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/rand_chacha-21bbd0cbc54481eb/invoked.timestamp +++ /dev/null @@ -1 +0,0 @@ -This file has an mtime of when this was started. \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/rand_chacha-21bbd0cbc54481eb/lib-rand_chacha b/crates/constraint-theory-core/target/release/.fingerprint/rand_chacha-21bbd0cbc54481eb/lib-rand_chacha deleted file mode 100644 index fb855ba..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/rand_chacha-21bbd0cbc54481eb/lib-rand_chacha +++ /dev/null @@ -1 +0,0 @@ -cb9d49c5b9751ec9 \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/rand_chacha-21bbd0cbc54481eb/lib-rand_chacha.json b/crates/constraint-theory-core/target/release/.fingerprint/rand_chacha-21bbd0cbc54481eb/lib-rand_chacha.json deleted file mode 100644 index 7933c35..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/rand_chacha-21bbd0cbc54481eb/lib-rand_chacha.json +++ /dev/null @@ -1 +0,0 @@ -{"rustc":7895727629726570510,"features":"[\"std\"]","declared_features":"[\"default\", \"serde\", \"serde1\", \"simd\", \"std\"]","target":15766068575093147603,"profile":13952719172529475294,"path":9640838196705965677,"deps":[[12919011715531272606,"ppv_lite86",false,11148974643069843375],[18130209639506977569,"rand_core",false,6964697863906215313]],"local":[{"CheckDepInfo":{"dep_info":"release\\.fingerprint\\rand_chacha-21bbd0cbc54481eb\\dep-lib-rand_chacha","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0} \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/rand_core-71c5bd6d66d8b47c/dep-lib-rand_core b/crates/constraint-theory-core/target/release/.fingerprint/rand_core-71c5bd6d66d8b47c/dep-lib-rand_core deleted file mode 100644 index ec3cb8b..0000000 Binary files a/crates/constraint-theory-core/target/release/.fingerprint/rand_core-71c5bd6d66d8b47c/dep-lib-rand_core and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/.fingerprint/rand_core-71c5bd6d66d8b47c/invoked.timestamp b/crates/constraint-theory-core/target/release/.fingerprint/rand_core-71c5bd6d66d8b47c/invoked.timestamp deleted file mode 100644 index e00328d..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/rand_core-71c5bd6d66d8b47c/invoked.timestamp +++ /dev/null @@ -1 +0,0 @@ -This file has an mtime of when this was started. \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/rand_core-71c5bd6d66d8b47c/lib-rand_core b/crates/constraint-theory-core/target/release/.fingerprint/rand_core-71c5bd6d66d8b47c/lib-rand_core deleted file mode 100644 index d2b4ee1..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/rand_core-71c5bd6d66d8b47c/lib-rand_core +++ /dev/null @@ -1 +0,0 @@ -91450d82ce93a760 \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/rand_core-71c5bd6d66d8b47c/lib-rand_core.json b/crates/constraint-theory-core/target/release/.fingerprint/rand_core-71c5bd6d66d8b47c/lib-rand_core.json deleted file mode 100644 index db902a3..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/rand_core-71c5bd6d66d8b47c/lib-rand_core.json +++ /dev/null @@ -1 +0,0 @@ -{"rustc":7895727629726570510,"features":"[\"alloc\", \"getrandom\", \"std\"]","declared_features":"[\"alloc\", \"getrandom\", \"serde\", \"serde1\", \"std\"]","target":13770603672348587087,"profile":13952719172529475294,"path":16631118836573791476,"deps":[[11023519408959114924,"getrandom",false,9268127088318384260]],"local":[{"CheckDepInfo":{"dep_info":"release\\.fingerprint\\rand_core-71c5bd6d66d8b47c\\dep-lib-rand_core","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0} \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/zerocopy-0677d7c8dbaebb49/run-build-script-build-script-build b/crates/constraint-theory-core/target/release/.fingerprint/zerocopy-0677d7c8dbaebb49/run-build-script-build-script-build deleted file mode 100644 index 1c48c81..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/zerocopy-0677d7c8dbaebb49/run-build-script-build-script-build +++ /dev/null @@ -1 +0,0 @@ -acd67c54cf9f7123 \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/zerocopy-0677d7c8dbaebb49/run-build-script-build-script-build.json b/crates/constraint-theory-core/target/release/.fingerprint/zerocopy-0677d7c8dbaebb49/run-build-script-build-script-build.json deleted file mode 100644 index fb0066b..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/zerocopy-0677d7c8dbaebb49/run-build-script-build-script-build.json +++ /dev/null @@ -1 +0,0 @@ -{"rustc":7895727629726570510,"features":"","declared_features":"","target":0,"profile":0,"path":0,"deps":[[17945577413884132710,"build_script_build",false,11492263671356966866]],"local":[{"RerunIfChanged":{"output":"release\\build\\zerocopy-0677d7c8dbaebb49\\output","paths":["build.rs","Cargo.toml"]}}],"rustflags":[],"config":0,"compile_kind":0} \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/zerocopy-67e156df7abf3b55/build-script-build-script-build b/crates/constraint-theory-core/target/release/.fingerprint/zerocopy-67e156df7abf3b55/build-script-build-script-build deleted file mode 100644 index 7bfcc96..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/zerocopy-67e156df7abf3b55/build-script-build-script-build +++ /dev/null @@ -1 +0,0 @@ -d2c75ba4ebb87c9f \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/zerocopy-67e156df7abf3b55/build-script-build-script-build.json b/crates/constraint-theory-core/target/release/.fingerprint/zerocopy-67e156df7abf3b55/build-script-build-script-build.json deleted file mode 100644 index 7a7b5d2..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/zerocopy-67e156df7abf3b55/build-script-build-script-build.json +++ /dev/null @@ -1 +0,0 @@ -{"rustc":7895727629726570510,"features":"[\"simd\"]","declared_features":"[\"__internal_use_only_features_that_work_on_stable\", \"alloc\", \"derive\", \"float-nightly\", \"simd\", \"simd-nightly\", \"std\", \"zerocopy-derive\"]","target":5408242616063297496,"profile":15614443681869996866,"path":7988576499929788585,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"release\\.fingerprint\\zerocopy-67e156df7abf3b55\\dep-build-script-build-script-build","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0} \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/zerocopy-67e156df7abf3b55/dep-build-script-build-script-build b/crates/constraint-theory-core/target/release/.fingerprint/zerocopy-67e156df7abf3b55/dep-build-script-build-script-build deleted file mode 100644 index ec3cb8b..0000000 Binary files a/crates/constraint-theory-core/target/release/.fingerprint/zerocopy-67e156df7abf3b55/dep-build-script-build-script-build and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/.fingerprint/zerocopy-67e156df7abf3b55/invoked.timestamp b/crates/constraint-theory-core/target/release/.fingerprint/zerocopy-67e156df7abf3b55/invoked.timestamp deleted file mode 100644 index e00328d..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/zerocopy-67e156df7abf3b55/invoked.timestamp +++ /dev/null @@ -1 +0,0 @@ -This file has an mtime of when this was started. \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/zerocopy-855602bf006226e4/dep-lib-zerocopy b/crates/constraint-theory-core/target/release/.fingerprint/zerocopy-855602bf006226e4/dep-lib-zerocopy deleted file mode 100644 index ec3cb8b..0000000 Binary files a/crates/constraint-theory-core/target/release/.fingerprint/zerocopy-855602bf006226e4/dep-lib-zerocopy and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/.fingerprint/zerocopy-855602bf006226e4/invoked.timestamp b/crates/constraint-theory-core/target/release/.fingerprint/zerocopy-855602bf006226e4/invoked.timestamp deleted file mode 100644 index e00328d..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/zerocopy-855602bf006226e4/invoked.timestamp +++ /dev/null @@ -1 +0,0 @@ -This file has an mtime of when this was started. \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/zerocopy-855602bf006226e4/lib-zerocopy b/crates/constraint-theory-core/target/release/.fingerprint/zerocopy-855602bf006226e4/lib-zerocopy deleted file mode 100644 index 26ce3d2..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/zerocopy-855602bf006226e4/lib-zerocopy +++ /dev/null @@ -1 +0,0 @@ -cfb0336b6c5be957 \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/.fingerprint/zerocopy-855602bf006226e4/lib-zerocopy.json b/crates/constraint-theory-core/target/release/.fingerprint/zerocopy-855602bf006226e4/lib-zerocopy.json deleted file mode 100644 index 1d08fec..0000000 --- a/crates/constraint-theory-core/target/release/.fingerprint/zerocopy-855602bf006226e4/lib-zerocopy.json +++ /dev/null @@ -1 +0,0 @@ -{"rustc":7895727629726570510,"features":"[\"simd\"]","declared_features":"[\"__internal_use_only_features_that_work_on_stable\", \"alloc\", \"derive\", \"float-nightly\", \"simd\", \"simd-nightly\", \"std\", \"zerocopy-derive\"]","target":3084901215544504908,"profile":13952719172529475294,"path":3582860614584310905,"deps":[[17945577413884132710,"build_script_build",false,2553998176520296108]],"local":[{"CheckDepInfo":{"dep_info":"release\\.fingerprint\\zerocopy-855602bf006226e4\\dep-lib-zerocopy","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0} \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/build/zerocopy-0677d7c8dbaebb49/invoked.timestamp b/crates/constraint-theory-core/target/release/build/zerocopy-0677d7c8dbaebb49/invoked.timestamp deleted file mode 100644 index e00328d..0000000 --- a/crates/constraint-theory-core/target/release/build/zerocopy-0677d7c8dbaebb49/invoked.timestamp +++ /dev/null @@ -1 +0,0 @@ -This file has an mtime of when this was started. \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/build/zerocopy-0677d7c8dbaebb49/output b/crates/constraint-theory-core/target/release/build/zerocopy-0677d7c8dbaebb49/output deleted file mode 100644 index deda5f6..0000000 --- a/crates/constraint-theory-core/target/release/build/zerocopy-0677d7c8dbaebb49/output +++ /dev/null @@ -1,21 +0,0 @@ -cargo:rerun-if-changed=build.rs -cargo:rerun-if-changed=Cargo.toml -cargo:rustc-check-cfg=cfg(no_zerocopy_simd_x86_avx12_1_89_0) -cargo:rustc-check-cfg=cfg(rust, values("1.89.0")) -cargo:rustc-check-cfg=cfg(no_zerocopy_core_error_1_81_0) -cargo:rustc-check-cfg=cfg(rust, values("1.81.0")) -cargo:rustc-check-cfg=cfg(no_zerocopy_diagnostic_on_unimplemented_1_78_0) -cargo:rustc-check-cfg=cfg(rust, values("1.78.0")) -cargo:rustc-check-cfg=cfg(no_zerocopy_generic_bounds_in_const_fn_1_61_0) -cargo:rustc-check-cfg=cfg(rust, values("1.61.0")) -cargo:rustc-check-cfg=cfg(no_zerocopy_target_has_atomics_1_60_0) -cargo:rustc-check-cfg=cfg(rust, values("1.60.0")) -cargo:rustc-check-cfg=cfg(no_zerocopy_aarch64_simd_1_59_0) -cargo:rustc-check-cfg=cfg(rust, values("1.59.0")) -cargo:rustc-check-cfg=cfg(no_zerocopy_panic_in_const_and_vec_try_reserve_1_57_0) -cargo:rustc-check-cfg=cfg(rust, values("1.57.0")) -cargo:rustc-check-cfg=cfg(doc_cfg) -cargo:rustc-check-cfg=cfg(kani) -cargo:rustc-check-cfg=cfg(__ZEROCOPY_INTERNAL_USE_ONLY_NIGHTLY_FEATURES_IN_TESTS) -cargo:rustc-check-cfg=cfg(__ZEROCOPY_INTERNAL_USE_ONLY_DEV_MODE) -cargo:rustc-check-cfg=cfg(coverage_nightly) diff --git a/crates/constraint-theory-core/target/release/build/zerocopy-0677d7c8dbaebb49/root-output b/crates/constraint-theory-core/target/release/build/zerocopy-0677d7c8dbaebb49/root-output deleted file mode 100644 index 5ad1f3e..0000000 --- a/crates/constraint-theory-core/target/release/build/zerocopy-0677d7c8dbaebb49/root-output +++ /dev/null @@ -1 +0,0 @@ -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\build\zerocopy-0677d7c8dbaebb49\out \ No newline at end of file diff --git a/crates/constraint-theory-core/target/release/build/zerocopy-0677d7c8dbaebb49/stderr b/crates/constraint-theory-core/target/release/build/zerocopy-0677d7c8dbaebb49/stderr deleted file mode 100644 index e69de29..0000000 diff --git a/crates/constraint-theory-core/target/release/build/zerocopy-67e156df7abf3b55/build-script-build.exe b/crates/constraint-theory-core/target/release/build/zerocopy-67e156df7abf3b55/build-script-build.exe deleted file mode 100644 index 7af0fab..0000000 Binary files a/crates/constraint-theory-core/target/release/build/zerocopy-67e156df7abf3b55/build-script-build.exe and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/build/zerocopy-67e156df7abf3b55/build_script_build-67e156df7abf3b55.d b/crates/constraint-theory-core/target/release/build/zerocopy-67e156df7abf3b55/build_script_build-67e156df7abf3b55.d deleted file mode 100644 index 018a0a2..0000000 --- a/crates/constraint-theory-core/target/release/build/zerocopy-67e156df7abf3b55/build_script_build-67e156df7abf3b55.d +++ /dev/null @@ -1,5 +0,0 @@ -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\build\zerocopy-67e156df7abf3b55\build_script_build-67e156df7abf3b55.d: C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\build.rs - -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\build\zerocopy-67e156df7abf3b55\build_script_build-67e156df7abf3b55.exe: C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\build.rs - -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\build.rs: diff --git a/crates/constraint-theory-core/target/release/build/zerocopy-67e156df7abf3b55/build_script_build-67e156df7abf3b55.exe b/crates/constraint-theory-core/target/release/build/zerocopy-67e156df7abf3b55/build_script_build-67e156df7abf3b55.exe deleted file mode 100644 index 7af0fab..0000000 Binary files a/crates/constraint-theory-core/target/release/build/zerocopy-67e156df7abf3b55/build_script_build-67e156df7abf3b55.exe and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/build/zerocopy-67e156df7abf3b55/build_script_build-67e156df7abf3b55.pdb b/crates/constraint-theory-core/target/release/build/zerocopy-67e156df7abf3b55/build_script_build-67e156df7abf3b55.pdb deleted file mode 100644 index 6309891..0000000 Binary files a/crates/constraint-theory-core/target/release/build/zerocopy-67e156df7abf3b55/build_script_build-67e156df7abf3b55.pdb and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/build/zerocopy-67e156df7abf3b55/build_script_build.pdb b/crates/constraint-theory-core/target/release/build/zerocopy-67e156df7abf3b55/build_script_build.pdb deleted file mode 100644 index 6309891..0000000 Binary files a/crates/constraint-theory-core/target/release/build/zerocopy-67e156df7abf3b55/build_script_build.pdb and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/deps/cfg_if-9338128228d95daf.d b/crates/constraint-theory-core/target/release/deps/cfg_if-9338128228d95daf.d deleted file mode 100644 index 0c84ff1..0000000 --- a/crates/constraint-theory-core/target/release/deps/cfg_if-9338128228d95daf.d +++ /dev/null @@ -1,7 +0,0 @@ -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\deps\cfg_if-9338128228d95daf.d: C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cfg-if-1.0.4\src\lib.rs - -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\deps\libcfg_if-9338128228d95daf.rlib: C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cfg-if-1.0.4\src\lib.rs - -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\deps\libcfg_if-9338128228d95daf.rmeta: C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cfg-if-1.0.4\src\lib.rs - -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\cfg-if-1.0.4\src\lib.rs: diff --git a/crates/constraint-theory-core/target/release/deps/constraint_theory_core-04ef63c691fb1dd3.d b/crates/constraint-theory-core/target/release/deps/constraint_theory_core-04ef63c691fb1dd3.d deleted file mode 100644 index f5b5239..0000000 --- a/crates/constraint-theory-core/target/release/deps/constraint_theory_core-04ef63c691fb1dd3.d +++ /dev/null @@ -1,13 +0,0 @@ -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\deps\constraint_theory_core-04ef63c691fb1dd3.d: src\lib.rs src\tile.rs src\manifold.rs src\curvature.rs src\cohomology.rs src\percolation.rs src\gauge.rs - -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\deps\constraint_theory_core-04ef63c691fb1dd3.exe: src\lib.rs src\tile.rs src\manifold.rs src\curvature.rs src\cohomology.rs src\percolation.rs src\gauge.rs - -src\lib.rs: -src\tile.rs: -src\manifold.rs: -src\curvature.rs: -src\cohomology.rs: -src\percolation.rs: -src\gauge.rs: - -# env-dep:CARGO_PKG_VERSION=0.1.0 diff --git a/crates/constraint-theory-core/target/release/deps/constraint_theory_core-04ef63c691fb1dd3.exe b/crates/constraint-theory-core/target/release/deps/constraint_theory_core-04ef63c691fb1dd3.exe deleted file mode 100644 index 9c176a0..0000000 Binary files a/crates/constraint-theory-core/target/release/deps/constraint_theory_core-04ef63c691fb1dd3.exe and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/deps/constraint_theory_core-04ef63c691fb1dd3.pdb b/crates/constraint-theory-core/target/release/deps/constraint_theory_core-04ef63c691fb1dd3.pdb deleted file mode 100644 index 6784461..0000000 Binary files a/crates/constraint-theory-core/target/release/deps/constraint_theory_core-04ef63c691fb1dd3.pdb and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/deps/constraint_theory_core-17da37567b83775d.d b/crates/constraint-theory-core/target/release/deps/constraint_theory_core-17da37567b83775d.d deleted file mode 100644 index f6db35d..0000000 --- a/crates/constraint-theory-core/target/release/deps/constraint_theory_core-17da37567b83775d.d +++ /dev/null @@ -1,15 +0,0 @@ -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\deps\constraint_theory_core-17da37567b83775d.d: src\lib.rs src\tile.rs src\manifold.rs src\curvature.rs src\cohomology.rs src\percolation.rs src\gauge.rs - -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\deps\libconstraint_theory_core-17da37567b83775d.rlib: src\lib.rs src\tile.rs src\manifold.rs src\curvature.rs src\cohomology.rs src\percolation.rs src\gauge.rs - -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\deps\libconstraint_theory_core-17da37567b83775d.rmeta: src\lib.rs src\tile.rs src\manifold.rs src\curvature.rs src\cohomology.rs src\percolation.rs src\gauge.rs - -src\lib.rs: -src\tile.rs: -src\manifold.rs: -src\curvature.rs: -src\cohomology.rs: -src\percolation.rs: -src\gauge.rs: - -# env-dep:CARGO_PKG_VERSION=0.1.0 diff --git a/crates/constraint-theory-core/target/release/deps/constraint_theory_core-4833f953f787b97f.d b/crates/constraint-theory-core/target/release/deps/constraint_theory_core-4833f953f787b97f.d deleted file mode 100644 index c51465e..0000000 --- a/crates/constraint-theory-core/target/release/deps/constraint_theory_core-4833f953f787b97f.d +++ /dev/null @@ -1,17 +0,0 @@ -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\deps\constraint_theory_core-4833f953f787b97f.d: src\lib.rs src\cohomology.rs src\curvature.rs src\gauge.rs src\kdtree.rs src\manifold.rs src\percolation.rs src\simd.rs src\tile.rs - -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\deps\libconstraint_theory_core-4833f953f787b97f.rlib: src\lib.rs src\cohomology.rs src\curvature.rs src\gauge.rs src\kdtree.rs src\manifold.rs src\percolation.rs src\simd.rs src\tile.rs - -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\deps\libconstraint_theory_core-4833f953f787b97f.rmeta: src\lib.rs src\cohomology.rs src\curvature.rs src\gauge.rs src\kdtree.rs src\manifold.rs src\percolation.rs src\simd.rs src\tile.rs - -src\lib.rs: -src\cohomology.rs: -src\curvature.rs: -src\gauge.rs: -src\kdtree.rs: -src\manifold.rs: -src\percolation.rs: -src\simd.rs: -src\tile.rs: - -# env-dep:CARGO_PKG_VERSION=0.1.0 diff --git a/crates/constraint-theory-core/target/release/deps/constraint_theory_core-5bcdf1f598170a9a.d b/crates/constraint-theory-core/target/release/deps/constraint_theory_core-5bcdf1f598170a9a.d deleted file mode 100644 index 730663d..0000000 --- a/crates/constraint-theory-core/target/release/deps/constraint_theory_core-5bcdf1f598170a9a.d +++ /dev/null @@ -1,15 +0,0 @@ -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\deps\constraint_theory_core-5bcdf1f598170a9a.d: src\lib.rs src\tile.rs src\manifold.rs src\curvature.rs src\cohomology.rs src\percolation.rs src\gauge.rs - -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\deps\libconstraint_theory_core-5bcdf1f598170a9a.rlib: src\lib.rs src\tile.rs src\manifold.rs src\curvature.rs src\cohomology.rs src\percolation.rs src\gauge.rs - -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\deps\libconstraint_theory_core-5bcdf1f598170a9a.rmeta: src\lib.rs src\tile.rs src\manifold.rs src\curvature.rs src\cohomology.rs src\percolation.rs src\gauge.rs - -src\lib.rs: -src\tile.rs: -src\manifold.rs: -src\curvature.rs: -src\cohomology.rs: -src\percolation.rs: -src\gauge.rs: - -# env-dep:CARGO_PKG_VERSION=0.1.0 diff --git a/crates/constraint-theory-core/target/release/deps/constraint_theory_core-9b914443d6f32edb.d b/crates/constraint-theory-core/target/release/deps/constraint_theory_core-9b914443d6f32edb.d deleted file mode 100644 index da7e6d2..0000000 --- a/crates/constraint-theory-core/target/release/deps/constraint_theory_core-9b914443d6f32edb.d +++ /dev/null @@ -1,16 +0,0 @@ -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\deps\constraint_theory_core-9b914443d6f32edb.d: src\lib.rs src\cohomology.rs src\curvature.rs src\gauge.rs src\kdtree.rs src\manifold.rs src\percolation.rs src\simd.rs src\tile.rs src\edge_case_tests.rs - -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\deps\constraint_theory_core-9b914443d6f32edb.exe: src\lib.rs src\cohomology.rs src\curvature.rs src\gauge.rs src\kdtree.rs src\manifold.rs src\percolation.rs src\simd.rs src\tile.rs src\edge_case_tests.rs - -src\lib.rs: -src\cohomology.rs: -src\curvature.rs: -src\gauge.rs: -src\kdtree.rs: -src\manifold.rs: -src\percolation.rs: -src\simd.rs: -src\tile.rs: -src\edge_case_tests.rs: - -# env-dep:CARGO_PKG_VERSION=0.1.0 diff --git a/crates/constraint-theory-core/target/release/deps/constraint_theory_core-9b914443d6f32edb.exe b/crates/constraint-theory-core/target/release/deps/constraint_theory_core-9b914443d6f32edb.exe deleted file mode 100644 index 9542001..0000000 Binary files a/crates/constraint-theory-core/target/release/deps/constraint_theory_core-9b914443d6f32edb.exe and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/deps/constraint_theory_core-9b914443d6f32edb.pdb b/crates/constraint-theory-core/target/release/deps/constraint_theory_core-9b914443d6f32edb.pdb deleted file mode 100644 index 2ae1947..0000000 Binary files a/crates/constraint-theory-core/target/release/deps/constraint_theory_core-9b914443d6f32edb.pdb and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/deps/constraint_theory_core-ad0e6a5e27730070.d b/crates/constraint-theory-core/target/release/deps/constraint_theory_core-ad0e6a5e27730070.d deleted file mode 100644 index 16630ef..0000000 --- a/crates/constraint-theory-core/target/release/deps/constraint_theory_core-ad0e6a5e27730070.d +++ /dev/null @@ -1,15 +0,0 @@ -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\deps\constraint_theory_core-ad0e6a5e27730070.d: src\lib.rs src\tile.rs src\manifold.rs src\curvature.rs src\cohomology.rs src\percolation.rs src\gauge.rs src\simd.rs src\kdtree.rs - -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\deps\constraint_theory_core-ad0e6a5e27730070.exe: src\lib.rs src\tile.rs src\manifold.rs src\curvature.rs src\cohomology.rs src\percolation.rs src\gauge.rs src\simd.rs src\kdtree.rs - -src\lib.rs: -src\tile.rs: -src\manifold.rs: -src\curvature.rs: -src\cohomology.rs: -src\percolation.rs: -src\gauge.rs: -src\simd.rs: -src\kdtree.rs: - -# env-dep:CARGO_PKG_VERSION=0.1.0 diff --git a/crates/constraint-theory-core/target/release/deps/getrandom-a09550116161c490.d b/crates/constraint-theory-core/target/release/deps/getrandom-a09550116161c490.d deleted file mode 100644 index 27c642f..0000000 --- a/crates/constraint-theory-core/target/release/deps/getrandom-a09550116161c490.d +++ /dev/null @@ -1,11 +0,0 @@ -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\deps\getrandom-a09550116161c490.d: C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\getrandom-0.2.17\src\lib.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\getrandom-0.2.17\src\error.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\getrandom-0.2.17\src\util.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\getrandom-0.2.17\src\error_impls.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\getrandom-0.2.17\src\windows.rs - -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\deps\libgetrandom-a09550116161c490.rlib: C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\getrandom-0.2.17\src\lib.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\getrandom-0.2.17\src\error.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\getrandom-0.2.17\src\util.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\getrandom-0.2.17\src\error_impls.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\getrandom-0.2.17\src\windows.rs - -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\deps\libgetrandom-a09550116161c490.rmeta: C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\getrandom-0.2.17\src\lib.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\getrandom-0.2.17\src\error.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\getrandom-0.2.17\src\util.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\getrandom-0.2.17\src\error_impls.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\getrandom-0.2.17\src\windows.rs - -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\getrandom-0.2.17\src\lib.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\getrandom-0.2.17\src\error.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\getrandom-0.2.17\src\util.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\getrandom-0.2.17\src\error_impls.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\getrandom-0.2.17\src\windows.rs: diff --git a/crates/constraint-theory-core/target/release/deps/libcfg_if-9338128228d95daf.rlib b/crates/constraint-theory-core/target/release/deps/libcfg_if-9338128228d95daf.rlib deleted file mode 100644 index 0dc1e87..0000000 Binary files a/crates/constraint-theory-core/target/release/deps/libcfg_if-9338128228d95daf.rlib and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/deps/libcfg_if-9338128228d95daf.rmeta b/crates/constraint-theory-core/target/release/deps/libcfg_if-9338128228d95daf.rmeta deleted file mode 100644 index e4790da..0000000 Binary files a/crates/constraint-theory-core/target/release/deps/libcfg_if-9338128228d95daf.rmeta and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/deps/libconstraint_theory_core-17da37567b83775d.rlib b/crates/constraint-theory-core/target/release/deps/libconstraint_theory_core-17da37567b83775d.rlib deleted file mode 100644 index 8722d78..0000000 Binary files a/crates/constraint-theory-core/target/release/deps/libconstraint_theory_core-17da37567b83775d.rlib and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/deps/libconstraint_theory_core-17da37567b83775d.rmeta b/crates/constraint-theory-core/target/release/deps/libconstraint_theory_core-17da37567b83775d.rmeta deleted file mode 100644 index cb18ceb..0000000 Binary files a/crates/constraint-theory-core/target/release/deps/libconstraint_theory_core-17da37567b83775d.rmeta and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/deps/libconstraint_theory_core-4833f953f787b97f.rlib b/crates/constraint-theory-core/target/release/deps/libconstraint_theory_core-4833f953f787b97f.rlib deleted file mode 100644 index 74c13a9..0000000 Binary files a/crates/constraint-theory-core/target/release/deps/libconstraint_theory_core-4833f953f787b97f.rlib and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/deps/libconstraint_theory_core-4833f953f787b97f.rmeta b/crates/constraint-theory-core/target/release/deps/libconstraint_theory_core-4833f953f787b97f.rmeta deleted file mode 100644 index f3a5a61..0000000 Binary files a/crates/constraint-theory-core/target/release/deps/libconstraint_theory_core-4833f953f787b97f.rmeta and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/deps/libconstraint_theory_core-5bcdf1f598170a9a.rlib b/crates/constraint-theory-core/target/release/deps/libconstraint_theory_core-5bcdf1f598170a9a.rlib deleted file mode 100644 index a1139e5..0000000 Binary files a/crates/constraint-theory-core/target/release/deps/libconstraint_theory_core-5bcdf1f598170a9a.rlib and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/deps/libconstraint_theory_core-5bcdf1f598170a9a.rmeta b/crates/constraint-theory-core/target/release/deps/libconstraint_theory_core-5bcdf1f598170a9a.rmeta deleted file mode 100644 index 90efaed..0000000 Binary files a/crates/constraint-theory-core/target/release/deps/libconstraint_theory_core-5bcdf1f598170a9a.rmeta and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/deps/libgetrandom-a09550116161c490.rlib b/crates/constraint-theory-core/target/release/deps/libgetrandom-a09550116161c490.rlib deleted file mode 100644 index 63df1d2..0000000 Binary files a/crates/constraint-theory-core/target/release/deps/libgetrandom-a09550116161c490.rlib and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/deps/libgetrandom-a09550116161c490.rmeta b/crates/constraint-theory-core/target/release/deps/libgetrandom-a09550116161c490.rmeta deleted file mode 100644 index 3066e8c..0000000 Binary files a/crates/constraint-theory-core/target/release/deps/libgetrandom-a09550116161c490.rmeta and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/deps/libppv_lite86-c9bba1eeedf3d66b.rlib b/crates/constraint-theory-core/target/release/deps/libppv_lite86-c9bba1eeedf3d66b.rlib deleted file mode 100644 index beda7b2..0000000 Binary files a/crates/constraint-theory-core/target/release/deps/libppv_lite86-c9bba1eeedf3d66b.rlib and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/deps/libppv_lite86-c9bba1eeedf3d66b.rmeta b/crates/constraint-theory-core/target/release/deps/libppv_lite86-c9bba1eeedf3d66b.rmeta deleted file mode 100644 index 244b78f..0000000 Binary files a/crates/constraint-theory-core/target/release/deps/libppv_lite86-c9bba1eeedf3d66b.rmeta and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/deps/librand-0e54bbf5c1239e42.rlib b/crates/constraint-theory-core/target/release/deps/librand-0e54bbf5c1239e42.rlib deleted file mode 100644 index 2cba8d4..0000000 Binary files a/crates/constraint-theory-core/target/release/deps/librand-0e54bbf5c1239e42.rlib and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/deps/librand-0e54bbf5c1239e42.rmeta b/crates/constraint-theory-core/target/release/deps/librand-0e54bbf5c1239e42.rmeta deleted file mode 100644 index af6c7d2..0000000 Binary files a/crates/constraint-theory-core/target/release/deps/librand-0e54bbf5c1239e42.rmeta and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/deps/librand_chacha-21bbd0cbc54481eb.rlib b/crates/constraint-theory-core/target/release/deps/librand_chacha-21bbd0cbc54481eb.rlib deleted file mode 100644 index d6cdec6..0000000 Binary files a/crates/constraint-theory-core/target/release/deps/librand_chacha-21bbd0cbc54481eb.rlib and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/deps/librand_chacha-21bbd0cbc54481eb.rmeta b/crates/constraint-theory-core/target/release/deps/librand_chacha-21bbd0cbc54481eb.rmeta deleted file mode 100644 index ffbc8a5..0000000 Binary files a/crates/constraint-theory-core/target/release/deps/librand_chacha-21bbd0cbc54481eb.rmeta and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/deps/librand_core-71c5bd6d66d8b47c.rlib b/crates/constraint-theory-core/target/release/deps/librand_core-71c5bd6d66d8b47c.rlib deleted file mode 100644 index 06ac047..0000000 Binary files a/crates/constraint-theory-core/target/release/deps/librand_core-71c5bd6d66d8b47c.rlib and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/deps/librand_core-71c5bd6d66d8b47c.rmeta b/crates/constraint-theory-core/target/release/deps/librand_core-71c5bd6d66d8b47c.rmeta deleted file mode 100644 index b308687..0000000 Binary files a/crates/constraint-theory-core/target/release/deps/librand_core-71c5bd6d66d8b47c.rmeta and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/deps/libzerocopy-855602bf006226e4.rlib b/crates/constraint-theory-core/target/release/deps/libzerocopy-855602bf006226e4.rlib deleted file mode 100644 index dd10a0c..0000000 Binary files a/crates/constraint-theory-core/target/release/deps/libzerocopy-855602bf006226e4.rlib and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/deps/libzerocopy-855602bf006226e4.rmeta b/crates/constraint-theory-core/target/release/deps/libzerocopy-855602bf006226e4.rmeta deleted file mode 100644 index cc3c73c..0000000 Binary files a/crates/constraint-theory-core/target/release/deps/libzerocopy-855602bf006226e4.rmeta and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/deps/ppv_lite86-c9bba1eeedf3d66b.d b/crates/constraint-theory-core/target/release/deps/ppv_lite86-c9bba1eeedf3d66b.d deleted file mode 100644 index 6347ef7..0000000 --- a/crates/constraint-theory-core/target/release/deps/ppv_lite86-c9bba1eeedf3d66b.d +++ /dev/null @@ -1,11 +0,0 @@ -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\deps\ppv_lite86-c9bba1eeedf3d66b.d: C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\ppv-lite86-0.2.21\src\lib.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\ppv-lite86-0.2.21\src\soft.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\ppv-lite86-0.2.21\src\types.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\ppv-lite86-0.2.21\src\x86_64\mod.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\ppv-lite86-0.2.21\src\x86_64\sse2.rs - -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\deps\libppv_lite86-c9bba1eeedf3d66b.rlib: C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\ppv-lite86-0.2.21\src\lib.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\ppv-lite86-0.2.21\src\soft.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\ppv-lite86-0.2.21\src\types.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\ppv-lite86-0.2.21\src\x86_64\mod.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\ppv-lite86-0.2.21\src\x86_64\sse2.rs - -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\deps\libppv_lite86-c9bba1eeedf3d66b.rmeta: C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\ppv-lite86-0.2.21\src\lib.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\ppv-lite86-0.2.21\src\soft.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\ppv-lite86-0.2.21\src\types.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\ppv-lite86-0.2.21\src\x86_64\mod.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\ppv-lite86-0.2.21\src\x86_64\sse2.rs - -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\ppv-lite86-0.2.21\src\lib.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\ppv-lite86-0.2.21\src\soft.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\ppv-lite86-0.2.21\src\types.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\ppv-lite86-0.2.21\src\x86_64\mod.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\ppv-lite86-0.2.21\src\x86_64\sse2.rs: diff --git a/crates/constraint-theory-core/target/release/deps/rand-0e54bbf5c1239e42.d b/crates/constraint-theory-core/target/release/deps/rand-0e54bbf5c1239e42.d deleted file mode 100644 index 31a765e..0000000 --- a/crates/constraint-theory-core/target/release/deps/rand-0e54bbf5c1239e42.d +++ /dev/null @@ -1,29 +0,0 @@ -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\deps\rand-0e54bbf5c1239e42.d: C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\lib.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\mod.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\bernoulli.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\distribution.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\float.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\integer.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\other.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\slice.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\utils.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\weighted_index.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\uniform.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\weighted.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\prelude.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\rng.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\rngs\mod.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\rngs\adapter\mod.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\rngs\adapter\read.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\rngs\adapter\reseeding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\rngs\mock.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\rngs\std.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\rngs\thread.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\seq\mod.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\seq\index.rs - -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\deps\librand-0e54bbf5c1239e42.rlib: C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\lib.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\mod.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\bernoulli.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\distribution.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\float.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\integer.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\other.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\slice.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\utils.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\weighted_index.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\uniform.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\weighted.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\prelude.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\rng.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\rngs\mod.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\rngs\adapter\mod.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\rngs\adapter\read.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\rngs\adapter\reseeding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\rngs\mock.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\rngs\std.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\rngs\thread.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\seq\mod.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\seq\index.rs - -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\deps\librand-0e54bbf5c1239e42.rmeta: C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\lib.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\mod.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\bernoulli.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\distribution.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\float.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\integer.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\other.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\slice.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\utils.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\weighted_index.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\uniform.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\weighted.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\prelude.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\rng.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\rngs\mod.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\rngs\adapter\mod.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\rngs\adapter\read.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\rngs\adapter\reseeding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\rngs\mock.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\rngs\std.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\rngs\thread.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\seq\mod.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\seq\index.rs - -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\lib.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\mod.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\bernoulli.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\distribution.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\float.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\integer.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\other.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\slice.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\utils.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\weighted_index.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\uniform.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\distributions\weighted.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\prelude.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\rng.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\rngs\mod.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\rngs\adapter\mod.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\rngs\adapter\read.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\rngs\adapter\reseeding.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\rngs\mock.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\rngs\std.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\rngs\thread.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\seq\mod.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand-0.8.5\src\seq\index.rs: diff --git a/crates/constraint-theory-core/target/release/deps/rand_chacha-21bbd0cbc54481eb.d b/crates/constraint-theory-core/target/release/deps/rand_chacha-21bbd0cbc54481eb.d deleted file mode 100644 index ea975e8..0000000 --- a/crates/constraint-theory-core/target/release/deps/rand_chacha-21bbd0cbc54481eb.d +++ /dev/null @@ -1,9 +0,0 @@ -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\deps\rand_chacha-21bbd0cbc54481eb.d: C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand_chacha-0.3.1\src\lib.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand_chacha-0.3.1\src\chacha.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand_chacha-0.3.1\src\guts.rs - -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\deps\librand_chacha-21bbd0cbc54481eb.rlib: C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand_chacha-0.3.1\src\lib.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand_chacha-0.3.1\src\chacha.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand_chacha-0.3.1\src\guts.rs - -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\deps\librand_chacha-21bbd0cbc54481eb.rmeta: C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand_chacha-0.3.1\src\lib.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand_chacha-0.3.1\src\chacha.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand_chacha-0.3.1\src\guts.rs - -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand_chacha-0.3.1\src\lib.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand_chacha-0.3.1\src\chacha.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand_chacha-0.3.1\src\guts.rs: diff --git a/crates/constraint-theory-core/target/release/deps/rand_core-71c5bd6d66d8b47c.d b/crates/constraint-theory-core/target/release/deps/rand_core-71c5bd6d66d8b47c.d deleted file mode 100644 index 38eb912..0000000 --- a/crates/constraint-theory-core/target/release/deps/rand_core-71c5bd6d66d8b47c.d +++ /dev/null @@ -1,12 +0,0 @@ -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\deps\rand_core-71c5bd6d66d8b47c.d: C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand_core-0.6.4\src\lib.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand_core-0.6.4\src\block.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand_core-0.6.4\src\error.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand_core-0.6.4\src\impls.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand_core-0.6.4\src\le.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand_core-0.6.4\src\os.rs - -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\deps\librand_core-71c5bd6d66d8b47c.rlib: C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand_core-0.6.4\src\lib.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand_core-0.6.4\src\block.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand_core-0.6.4\src\error.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand_core-0.6.4\src\impls.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand_core-0.6.4\src\le.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand_core-0.6.4\src\os.rs - -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\deps\librand_core-71c5bd6d66d8b47c.rmeta: C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand_core-0.6.4\src\lib.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand_core-0.6.4\src\block.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand_core-0.6.4\src\error.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand_core-0.6.4\src\impls.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand_core-0.6.4\src\le.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand_core-0.6.4\src\os.rs - -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand_core-0.6.4\src\lib.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand_core-0.6.4\src\block.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand_core-0.6.4\src\error.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand_core-0.6.4\src\impls.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand_core-0.6.4\src\le.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\rand_core-0.6.4\src\os.rs: diff --git a/crates/constraint-theory-core/target/release/deps/zerocopy-855602bf006226e4.d b/crates/constraint-theory-core/target/release/deps/zerocopy-855602bf006226e4.d deleted file mode 100644 index 0ec4a7d..0000000 --- a/crates/constraint-theory-core/target/release/deps/zerocopy-855602bf006226e4.d +++ /dev/null @@ -1,156 +0,0 @@ -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\deps\zerocopy-855602bf006226e4.d: C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\lib.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\util\mod.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\util\macros.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\util\macro_util.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\byte_slice.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\byteorder.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\deprecated.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\error.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\impls.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\layout.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\macros.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\pointer\mod.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\pointer\inner.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\pointer\invariant.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\pointer\ptr.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\pointer\transmute.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\ref.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\split_at.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\wrappers.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/formats/coco_static_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/transmute.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/transmute.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/transmute.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/transmute_ref_static_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/transmute_ref_static_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/transmute_ref_static_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/formats/coco_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/transmute_ref_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/transmute_ref_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/transmute_ref_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_transmute.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_transmute.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_transmute.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_transmute_ref_static_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_transmute_ref_static_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_transmute_ref_static_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_transmute_ref_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_transmute_ref_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_transmute_ref_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_static_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_static_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_static_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/formats/coco_dynamic_padding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_dynamic_padding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_dynamic_padding.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_dynamic_padding.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_static_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_static_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_static_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_dynamic_padding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_dynamic_padding.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_dynamic_padding.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_static_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_static_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_static_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_dynamic_padding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_dynamic_padding.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_dynamic_padding.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_with_elems_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_with_elems_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_with_elems_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_with_elems_dynamic_padding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_with_elems_dynamic_padding.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_with_elems_dynamic_padding.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_with_elems_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_with_elems_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_with_elems_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_with_elems_dynamic_padding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_with_elems_dynamic_padding.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_with_elems_dynamic_padding.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_with_elems_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_with_elems_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_with_elems_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_with_elems_dynamic_padding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_with_elems_dynamic_padding.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_with_elems_dynamic_padding.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_read_from_bytes.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_read_from_bytes.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_read_from_bytes.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_read_from_prefix.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_read_from_prefix.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_read_from_prefix.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_read_from_suffix.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_read_from_suffix.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_read_from_suffix.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_static_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_static_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_static_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_dynamic_padding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_dynamic_padding.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_dynamic_padding.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_static_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_static_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_static_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_dynamic_padding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_dynamic_padding.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_dynamic_padding.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_static_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_static_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_static_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_dynamic_padding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_dynamic_padding.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_dynamic_padding.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_with_elems_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_with_elems_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_with_elems_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_with_elems_dynamic_padding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_with_elems_dynamic_padding.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_with_elems_dynamic_padding.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_with_elems_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_with_elems_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_with_elems_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_with_elems_dynamic_padding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_with_elems_dynamic_padding.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_with_elems_dynamic_padding.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_with_elems_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_with_elems_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_with_elems_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_with_elems_dynamic_padding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_with_elems_dynamic_padding.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_with_elems_dynamic_padding.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/read_from_bytes.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/read_from_bytes.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/read_from_bytes.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/read_from_prefix.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/read_from_prefix.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/read_from_prefix.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/read_from_suffix.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/read_from_suffix.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/read_from_suffix.x86-64.mca - -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\deps\libzerocopy-855602bf006226e4.rlib: C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\lib.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\util\mod.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\util\macros.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\util\macro_util.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\byte_slice.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\byteorder.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\deprecated.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\error.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\impls.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\layout.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\macros.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\pointer\mod.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\pointer\inner.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\pointer\invariant.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\pointer\ptr.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\pointer\transmute.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\ref.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\split_at.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\wrappers.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/formats/coco_static_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/transmute.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/transmute.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/transmute.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/transmute_ref_static_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/transmute_ref_static_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/transmute_ref_static_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/formats/coco_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/transmute_ref_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/transmute_ref_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/transmute_ref_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_transmute.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_transmute.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_transmute.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_transmute_ref_static_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_transmute_ref_static_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_transmute_ref_static_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_transmute_ref_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_transmute_ref_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_transmute_ref_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_static_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_static_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_static_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/formats/coco_dynamic_padding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_dynamic_padding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_dynamic_padding.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_dynamic_padding.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_static_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_static_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_static_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_dynamic_padding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_dynamic_padding.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_dynamic_padding.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_static_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_static_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_static_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_dynamic_padding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_dynamic_padding.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_dynamic_padding.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_with_elems_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_with_elems_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_with_elems_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_with_elems_dynamic_padding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_with_elems_dynamic_padding.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_with_elems_dynamic_padding.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_with_elems_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_with_elems_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_with_elems_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_with_elems_dynamic_padding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_with_elems_dynamic_padding.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_with_elems_dynamic_padding.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_with_elems_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_with_elems_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_with_elems_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_with_elems_dynamic_padding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_with_elems_dynamic_padding.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_with_elems_dynamic_padding.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_read_from_bytes.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_read_from_bytes.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_read_from_bytes.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_read_from_prefix.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_read_from_prefix.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_read_from_prefix.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_read_from_suffix.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_read_from_suffix.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_read_from_suffix.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_static_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_static_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_static_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_dynamic_padding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_dynamic_padding.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_dynamic_padding.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_static_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_static_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_static_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_dynamic_padding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_dynamic_padding.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_dynamic_padding.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_static_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_static_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_static_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_dynamic_padding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_dynamic_padding.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_dynamic_padding.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_with_elems_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_with_elems_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_with_elems_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_with_elems_dynamic_padding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_with_elems_dynamic_padding.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_with_elems_dynamic_padding.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_with_elems_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_with_elems_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_with_elems_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_with_elems_dynamic_padding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_with_elems_dynamic_padding.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_with_elems_dynamic_padding.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_with_elems_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_with_elems_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_with_elems_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_with_elems_dynamic_padding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_with_elems_dynamic_padding.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_with_elems_dynamic_padding.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/read_from_bytes.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/read_from_bytes.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/read_from_bytes.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/read_from_prefix.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/read_from_prefix.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/read_from_prefix.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/read_from_suffix.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/read_from_suffix.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/read_from_suffix.x86-64.mca - -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\deps\libzerocopy-855602bf006226e4.rmeta: C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\lib.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\util\mod.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\util\macros.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\util\macro_util.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\byte_slice.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\byteorder.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\deprecated.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\error.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\impls.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\layout.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\macros.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\pointer\mod.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\pointer\inner.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\pointer\invariant.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\pointer\ptr.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\pointer\transmute.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\ref.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\split_at.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\wrappers.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/formats/coco_static_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/transmute.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/transmute.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/transmute.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/transmute_ref_static_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/transmute_ref_static_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/transmute_ref_static_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/formats/coco_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/transmute_ref_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/transmute_ref_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/transmute_ref_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_transmute.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_transmute.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_transmute.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_transmute_ref_static_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_transmute_ref_static_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_transmute_ref_static_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_transmute_ref_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_transmute_ref_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_transmute_ref_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_static_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_static_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_static_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/formats/coco_dynamic_padding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_dynamic_padding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_dynamic_padding.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_dynamic_padding.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_static_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_static_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_static_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_dynamic_padding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_dynamic_padding.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_dynamic_padding.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_static_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_static_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_static_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_dynamic_padding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_dynamic_padding.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_dynamic_padding.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_with_elems_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_with_elems_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_with_elems_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_with_elems_dynamic_padding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_with_elems_dynamic_padding.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_with_elems_dynamic_padding.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_with_elems_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_with_elems_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_with_elems_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_with_elems_dynamic_padding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_with_elems_dynamic_padding.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_with_elems_dynamic_padding.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_with_elems_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_with_elems_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_with_elems_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_with_elems_dynamic_padding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_with_elems_dynamic_padding.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_with_elems_dynamic_padding.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_read_from_bytes.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_read_from_bytes.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_read_from_bytes.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_read_from_prefix.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_read_from_prefix.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_read_from_prefix.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_read_from_suffix.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_read_from_suffix.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_read_from_suffix.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_static_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_static_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_static_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_dynamic_padding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_dynamic_padding.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_dynamic_padding.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_static_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_static_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_static_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_dynamic_padding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_dynamic_padding.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_dynamic_padding.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_static_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_static_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_static_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_dynamic_padding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_dynamic_padding.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_dynamic_padding.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_with_elems_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_with_elems_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_with_elems_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_with_elems_dynamic_padding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_with_elems_dynamic_padding.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_with_elems_dynamic_padding.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_with_elems_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_with_elems_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_with_elems_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_with_elems_dynamic_padding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_with_elems_dynamic_padding.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_with_elems_dynamic_padding.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_with_elems_dynamic_size.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_with_elems_dynamic_size.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_with_elems_dynamic_size.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_with_elems_dynamic_padding.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_with_elems_dynamic_padding.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_with_elems_dynamic_padding.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/read_from_bytes.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/read_from_bytes.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/read_from_bytes.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/read_from_prefix.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/read_from_prefix.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/read_from_prefix.x86-64.mca C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/read_from_suffix.rs C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/read_from_suffix.x86-64 C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/read_from_suffix.x86-64.mca - -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\lib.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\util\mod.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\util\macros.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\util\macro_util.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\byte_slice.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\byteorder.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\deprecated.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\error.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\impls.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\layout.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\macros.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\pointer\mod.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\pointer\inner.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\pointer\invariant.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\pointer\ptr.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\pointer\transmute.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\ref.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\split_at.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\wrappers.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/formats/coco_static_size.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/transmute.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/transmute.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/transmute.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/transmute_ref_static_size.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/transmute_ref_static_size.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/transmute_ref_static_size.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/formats/coco_dynamic_size.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/transmute_ref_dynamic_size.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/transmute_ref_dynamic_size.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/transmute_ref_dynamic_size.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_transmute.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_transmute.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_transmute.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_transmute_ref_static_size.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_transmute_ref_static_size.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_transmute_ref_static_size.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_transmute_ref_dynamic_size.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_transmute_ref_dynamic_size.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_transmute_ref_dynamic_size.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_static_size.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_static_size.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_static_size.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_dynamic_size.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_dynamic_size.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_dynamic_size.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/formats/coco_dynamic_padding.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_dynamic_padding.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_dynamic_padding.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_dynamic_padding.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_static_size.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_static_size.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_static_size.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_dynamic_size.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_dynamic_size.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_dynamic_size.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_dynamic_padding.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_dynamic_padding.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_dynamic_padding.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_static_size.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_static_size.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_static_size.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_dynamic_size.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_dynamic_size.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_dynamic_size.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_dynamic_padding.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_dynamic_padding.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_dynamic_padding.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_with_elems_dynamic_size.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_with_elems_dynamic_size.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_with_elems_dynamic_size.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_with_elems_dynamic_padding.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_with_elems_dynamic_padding.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_bytes_with_elems_dynamic_padding.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_with_elems_dynamic_size.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_with_elems_dynamic_size.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_with_elems_dynamic_size.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_with_elems_dynamic_padding.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_with_elems_dynamic_padding.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_prefix_with_elems_dynamic_padding.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_with_elems_dynamic_size.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_with_elems_dynamic_size.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_with_elems_dynamic_size.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_with_elems_dynamic_padding.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_with_elems_dynamic_padding.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_ref_from_suffix_with_elems_dynamic_padding.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_read_from_bytes.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_read_from_bytes.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_read_from_bytes.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_read_from_prefix.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_read_from_prefix.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_read_from_prefix.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_read_from_suffix.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_read_from_suffix.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/try_read_from_suffix.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_static_size.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_static_size.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_static_size.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_dynamic_size.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_dynamic_size.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_dynamic_size.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_dynamic_padding.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_dynamic_padding.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_dynamic_padding.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_static_size.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_static_size.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_static_size.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_dynamic_size.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_dynamic_size.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_dynamic_size.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_dynamic_padding.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_dynamic_padding.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_dynamic_padding.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_static_size.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_static_size.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_static_size.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_dynamic_size.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_dynamic_size.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_dynamic_size.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_dynamic_padding.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_dynamic_padding.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_dynamic_padding.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_with_elems_dynamic_size.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_with_elems_dynamic_size.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_with_elems_dynamic_size.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_with_elems_dynamic_padding.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_with_elems_dynamic_padding.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_bytes_with_elems_dynamic_padding.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_with_elems_dynamic_size.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_with_elems_dynamic_size.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_with_elems_dynamic_size.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_with_elems_dynamic_padding.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_with_elems_dynamic_padding.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_prefix_with_elems_dynamic_padding.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_with_elems_dynamic_size.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_with_elems_dynamic_size.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_with_elems_dynamic_size.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_with_elems_dynamic_padding.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_with_elems_dynamic_padding.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/ref_from_suffix_with_elems_dynamic_padding.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/read_from_bytes.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/read_from_bytes.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/read_from_bytes.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/read_from_prefix.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/read_from_prefix.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/read_from_prefix.x86-64.mca: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/read_from_suffix.rs: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/read_from_suffix.x86-64: -C:\Users\casey\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\zerocopy-0.8.42\src\../benches/read_from_suffix.x86-64.mca: - -# env-dep:CARGO_PKG_VERSION=0.8.42 diff --git a/crates/constraint-theory-core/target/release/examples/bench.d b/crates/constraint-theory-core/target/release/examples/bench.d deleted file mode 100644 index 1fa7fa9..0000000 --- a/crates/constraint-theory-core/target/release/examples/bench.d +++ /dev/null @@ -1,5 +0,0 @@ -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\examples\bench.d: examples\bench.rs - -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\examples\bench.exe: examples\bench.rs - -examples\bench.rs: diff --git a/crates/constraint-theory-core/target/release/examples/bench.exe b/crates/constraint-theory-core/target/release/examples/bench.exe deleted file mode 100644 index 3b93b81..0000000 Binary files a/crates/constraint-theory-core/target/release/examples/bench.exe and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/examples/bench.pdb b/crates/constraint-theory-core/target/release/examples/bench.pdb deleted file mode 100644 index 3131fe3..0000000 Binary files a/crates/constraint-theory-core/target/release/examples/bench.pdb and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/examples/bench_profiled.d b/crates/constraint-theory-core/target/release/examples/bench_profiled.d deleted file mode 100644 index 571748f..0000000 --- a/crates/constraint-theory-core/target/release/examples/bench_profiled.d +++ /dev/null @@ -1,5 +0,0 @@ -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\examples\bench_profiled.d: examples\bench_profiled.rs - -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\examples\bench_profiled.exe: examples\bench_profiled.rs - -examples\bench_profiled.rs: diff --git a/crates/constraint-theory-core/target/release/examples/bench_profiled.exe b/crates/constraint-theory-core/target/release/examples/bench_profiled.exe deleted file mode 100644 index a52c323..0000000 Binary files a/crates/constraint-theory-core/target/release/examples/bench_profiled.exe and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/examples/bench_profiled.pdb b/crates/constraint-theory-core/target/release/examples/bench_profiled.pdb deleted file mode 100644 index 876f23d..0000000 Binary files a/crates/constraint-theory-core/target/release/examples/bench_profiled.pdb and /dev/null differ diff --git a/crates/constraint-theory-core/target/release/libconstraint_theory_core.d b/crates/constraint-theory-core/target/release/libconstraint_theory_core.d deleted file mode 100644 index 12f2bc0..0000000 --- a/crates/constraint-theory-core/target/release/libconstraint_theory_core.d +++ /dev/null @@ -1 +0,0 @@ -C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\target\release\libconstraint_theory_core.rlib: C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\src\cohomology.rs C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\src\curvature.rs C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\src\gauge.rs C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\src\kdtree.rs C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\src\lib.rs C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\src\manifold.rs C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\src\percolation.rs C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\src\simd.rs C:\Users\casey\polln\constrainttheory\crates\constraint-theory-core\src\tile.rs diff --git a/crates/constraint-theory-core/target/release/libconstraint_theory_core.rlib b/crates/constraint-theory-core/target/release/libconstraint_theory_core.rlib deleted file mode 100644 index ab2c8de..0000000 Binary files a/crates/constraint-theory-core/target/release/libconstraint_theory_core.rlib and /dev/null differ diff --git a/docs/README.md b/docs/README.md index 401815a..32e3a08 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,103 +1,17 @@ # Documentation -This directory contains comprehensive documentation for the Constraint Theory project. +## Essential Reading -## Quick Navigation +| Document | Description | +|----------|-------------| +| [TUTORIAL.md](TUTORIAL.md) | Step-by-step guide to using the library | +| [BENCHMARKS.md](BENCHMARKS.md) | Performance methodology and honest comparisons | +| [DISCLAIMERS.md](DISCLAIMERS.md) | Scope clarifications — read before citing | +| [FAQ.md](FAQ.md) | Frequently asked questions | +| [MATHEMATICAL_FOUNDATIONS_DEEP_DIVE.md](MATHEMATICAL_FOUNDATIONS_DEEP_DIVE.md) | Full theoretical treatment | -### Core Documentation -- [`README.md`](../README.md) - Main project README -- [`ARCHITECTURE.md`](ARCHITECTURE.md) - System architecture overview -- [`ARCHITECTURE_DIAGRAMS.md`](ARCHITECTURE_DIAGRAMS.md) - Visual architecture diagrams -- [`QUICKSTART.md`](QUICKSTART.md) - Getting started guide -- [`FAQ.md`](FAQ.md) - Frequently asked questions -- [`CONTRIBUTING.md`](CONTRIBUTING.md) - Contribution guidelines +## Additional Resources -### Research & Theory -- [`RESEARCH.md`](RESEARCH.md) - Research overview -- [`RESEARCH_INDEX.md`](RESEARCH_INDEX.md) - Research paper index -- [`RESEARCH_COMPREHENSIVE_SUMMARY.md`](RESEARCH_COMPREHENSIVE_SUMMARY.md) - Comprehensive research summary -- [`MATHEMATICAL_FOUNDATIONS_DEEP_DIVE.md`](MATHEMATICAL_FOUNDATIONS_DEEP_DIVE.md) - Mathematical foundations -- [`THEORETICAL_FOUNDATIONS_SUMMARY.md`](THEORETICAL_FOUNDATIONS_SUMMARY.md) - Theoretical overview -- [`THEORETICAL_GUARANTEES.md`](THEORETICAL_GUARANTEES.md) - Theoretical guarantees -- [`RIGIDITY_CURVATURE_DUALITY_PROOF.md`](RIGIDITY_CURVATURE_DUALITY_PROOF.md) - Key mathematical proof -- [`HOLONOMIC_INFORMATION_THEORY.md`](HOLONOMIC_INFORMATION_THEORY.md) - Information theory -- [`GEOMETRIC_INTERPRETATION.md`](GEOMETRIC_INTERPRETATION.md) - Geometric interpretation -- [`OPEN_QUESTIONS_RESEARCH.md`](OPEN_QUESTIONS_RESEARCH.md) - Open research questions - -### Implementation -- [`IMPLEMENTATION_GUIDE.md`](IMPLEMENTATION_GUIDE.md) - Implementation guide -- [`IMPLEMENTATION_PLAN.md`](IMPLEMENTATION_PLAN.md) - Implementation plan -- [`SCHEMA_DESIGN.md`](SCHEMA_DESIGN.md) - Schema design documentation -- [`PRODUCTION_ENGINE.md`](PRODUCTION_ENGINE.md) - Production engine details - -### GPU & CUDA -- [`CUDA_ARCHITECTURE.md`](CUDA_ARCHITECTURE.md) - CUDA architecture -- [`CUDA_ARCHITECTURE_SUMMARY.md`](CUDA_ARCHITECTURE_SUMMARY.md) - CUDA summary -- [`CUDA_IMPLEMENTATION_ROADMAP.md`](CUDA_IMPLEMENTATION_ROADMAP.md) - CUDA roadmap -- [`CUDA_QUICK_REFERENCE.md`](CUDA_QUICK_REFERENCE.md) - CUDA quick reference - -### Performance & Testing -- [`BASELINE_BENCHMARKS.md`](BASELINE_BENCHMARKS.md) - Baseline benchmarks -- [`VALIDATION_SUITE.md`](VALIDATION_SUITE.md) - Validation suite -- [`VALIDATION_EXPERIMENTS.md`](VALIDATION_EXPERIMENTS.md) - Validation experiments -- [`VALIDATION_README.md`](VALIDATION_README.md) - Validation overview -- [`STRESS_TEST_SIMULATION.md`](STRESS_TEST_SIMULATION.md) - Stress testing -- [`SIMULATION_RESULTS.md`](SIMULATION_RESULTS.md) - Simulation results -- [`PERFORMANCE_GRAPHS.md`](PERFORMANCE_GRAPHS.md) - Performance visualizations -- [`GPU_SIMULATION_FRAMEWORK_REPORT.md`](GPU_SIMULATION_FRAMEWORK_REPORT.md) - GPU simulation -- [`SIMULATION_FRAMEWORK_SUMMARY.md`](SIMULATION_FRAMEWORK_SUMMARY.md) - Simulation overview - -### Deployment -- [`DEPLOYMENT_GUIDE.md`](DEPLOYMENT_GUIDE.md) - Deployment guide -- [`DEPLOYMENT_CHECKLIST.md`](DEPLOYMENT_CHECKLIST.md) - Deployment checklist -- [`README_DEPLOYMENT.md`](README_DEPLOYMENT.md) - Deployment README -- [`CLOUDFLARE_DEPLOYMENT_SUMMARY.md`](CLOUDFLARE_DEPLOYMENT_SUMMARY.md) - Cloudflare deployment - -### Code Quality -- [`CODE_QUALITY_REPORT.md`](CODE_QUALITY_REPORT.md) - Code quality report -- [`CODE_QUALITY_METRICS.md`](CODE_QUALITY_METRICS.md) - Quality metrics -- [`IMPROVEMENT_RECOMMENDATIONS.md`](IMPROVEMENT_RECOMMENDATIONS.md) - Improvement suggestions - -### Next Generation -- [`NEXT_GEN_ARCHITECTURES.md`](NEXT_GEN_ARCHITECTURES.md) - Next-gen architectures -- [`NEXT_GEN_ARCHITECTURE_SUMMARY.md`](NEXT_GEN_ARCHITECTURE_SUMMARY.md) - Next-gen summary -- [`NEXT_GEN_QUICK_REFERENCE.md`](NEXT_GEN_QUICK_REFERENCE.md) - Next-gen quick reference -- [`NEXT_GEN_DELIVERABLES.md`](NEXT_GEN_DELIVERABLES.md) - Next-gen deliverables -- [`NEXT_GEN_VISUAL_GUIDE.md`](NEXT_GEN_VISUAL_GUIDE.md) - Next-gen visual guide - -### Progress Reports -- [`PROGRESS_REPORT.md`](PROGRESS_REPORT.md) - Progress report -- [`PHASE1_COMPLETION_SUMMARY.md`](PHASE1_COMPLETION_SUMMARY.md) - Phase 1 summary -- [`COMMIT_SUMMARY.md`](COMMIT_SUMMARY.md) - Commit summary -- [`README_ENHANCEMENT_SUMMARY.md`](README_ENHANCEMENT_SUMMARY.md) - README enhancements - -### Visual Guides -- [`VISUAL_GUIDE.md`](VISUAL_GUIDE.md) - Visual guide -- [`INTERACTIVE_TUTORIALS.md`](INTERACTIVE_TUTORIALS.md) - Interactive tutorials - -### Whitepaper -See [`whitepaper/`](whitepaper/) for all whitepaper-related documentation. - -### Supplementary -- [`SUPPLEMENTARY_MATERIALS.md`](SUPPLEMENTARY_MATERIALS.md) - Supplementary materials -- [`PAPER.md`](PAPER.md) - Main paper document -- [`KDTREE_INTEGRATION_COMPLETE.md`](KDTREE_INTEGRATION_COMPLETE.md) - KD-tree integration - -## Documentation Structure - -``` -docs/ -├── whitepaper/ # Whitepaper materials -├── ARCHITECTURE.md # System architecture -├── RESEARCH*.md # Research documentation -├── IMPLEMENTATION*.md # Implementation guides -├── CUDA*.md # GPU/CUDA documentation -├── VALIDATION*.md # Testing & validation -├── DEPLOYMENT*.md # Deployment guides -└── NEXT_GEN*.md # Next-generation architecture -``` - ---- - -**Last Updated:** 2026-03-16 -**Purpose:** Comprehensive project documentation +- [research/](research/) — Extended research documents, working papers, architecture docs +- [policies/](policies/) — CPU and VRAM policy configurations +- [agent-personas/](agent-personas/) — AI agent persona definitions diff --git a/SOUL.md b/docs/agent-personas/CUDACLAW.md similarity index 100% rename from SOUL.md rename to docs/agent-personas/CUDACLAW.md diff --git a/POLICY_CPU.toml b/docs/policies/POLICY_CPU.toml similarity index 100% rename from POLICY_CPU.toml rename to docs/policies/POLICY_CPU.toml diff --git a/POLICY_VRAM.toml b/docs/policies/POLICY_VRAM.toml similarity index 100% rename from POLICY_VRAM.toml rename to docs/policies/POLICY_VRAM.toml diff --git a/docs/ACCURATE_BENCHMARK_RESULTS.md b/docs/research/ACCURATE_BENCHMARK_RESULTS.md similarity index 100% rename from docs/ACCURATE_BENCHMARK_RESULTS.md rename to docs/research/ACCURATE_BENCHMARK_RESULTS.md diff --git a/docs/API_DOCUMENTATION_SUMMARY.md b/docs/research/API_DOCUMENTATION_SUMMARY.md similarity index 100% rename from docs/API_DOCUMENTATION_SUMMARY.md rename to docs/research/API_DOCUMENTATION_SUMMARY.md diff --git a/docs/API_QUICK_REFERENCE.md b/docs/research/API_QUICK_REFERENCE.md similarity index 100% rename from docs/API_QUICK_REFERENCE.md rename to docs/research/API_QUICK_REFERENCE.md diff --git a/docs/API_REFERENCE.md b/docs/research/API_REFERENCE.md similarity index 100% rename from docs/API_REFERENCE.md rename to docs/research/API_REFERENCE.md diff --git a/docs/ARCHITECTURE.md b/docs/research/ARCHITECTURE.md similarity index 100% rename from docs/ARCHITECTURE.md rename to docs/research/ARCHITECTURE.md diff --git a/docs/ARCHITECTURE_DIAGRAMS.md b/docs/research/ARCHITECTURE_DIAGRAMS.md similarity index 100% rename from docs/ARCHITECTURE_DIAGRAMS.md rename to docs/research/ARCHITECTURE_DIAGRAMS.md diff --git a/docs/ARCHITECTURE_DIAGRAMS.md.bak b/docs/research/ARCHITECTURE_DIAGRAMS.md.bak similarity index 100% rename from docs/ARCHITECTURE_DIAGRAMS.md.bak rename to docs/research/ARCHITECTURE_DIAGRAMS.md.bak diff --git a/docs/BASELINE_BENCHMARKS.md b/docs/research/BASELINE_BENCHMARKS.md similarity index 100% rename from docs/BASELINE_BENCHMARKS.md rename to docs/research/BASELINE_BENCHMARKS.md diff --git a/docs/BENCHMARK_ACCURACY_UPDATE.md b/docs/research/BENCHMARK_ACCURACY_UPDATE.md similarity index 100% rename from docs/BENCHMARK_ACCURACY_UPDATE.md rename to docs/research/BENCHMARK_ACCURACY_UPDATE.md diff --git a/docs/BENCHMARK_METHODOLOGY.md b/docs/research/BENCHMARK_METHODOLOGY.md similarity index 100% rename from docs/BENCHMARK_METHODOLOGY.md rename to docs/research/BENCHMARK_METHODOLOGY.md diff --git a/docs/CLAIM_VERIFICATION_REPORT.md b/docs/research/CLAIM_VERIFICATION_REPORT.md similarity index 100% rename from docs/CLAIM_VERIFICATION_REPORT.md rename to docs/research/CLAIM_VERIFICATION_REPORT.md diff --git a/docs/CLAIM_VERIFICATION_SUMMARY.md b/docs/research/CLAIM_VERIFICATION_SUMMARY.md similarity index 100% rename from docs/CLAIM_VERIFICATION_SUMMARY.md rename to docs/research/CLAIM_VERIFICATION_SUMMARY.md diff --git a/docs/CLARITY_FIX_CHECKLIST.md b/docs/research/CLARITY_FIX_CHECKLIST.md similarity index 100% rename from docs/CLARITY_FIX_CHECKLIST.md rename to docs/research/CLARITY_FIX_CHECKLIST.md diff --git a/docs/CLARITY_REVIEW_EXECUTIVE_SUMMARY.md b/docs/research/CLARITY_REVIEW_EXECUTIVE_SUMMARY.md similarity index 100% rename from docs/CLARITY_REVIEW_EXECUTIVE_SUMMARY.md rename to docs/research/CLARITY_REVIEW_EXECUTIVE_SUMMARY.md diff --git a/docs/CLARITY_REVIEW_REPORT.md b/docs/research/CLARITY_REVIEW_REPORT.md similarity index 100% rename from docs/CLARITY_REVIEW_REPORT.md rename to docs/research/CLARITY_REVIEW_REPORT.md diff --git a/docs/CLOUDFLARE_DEPLOYMENT_SUMMARY.md b/docs/research/CLOUDFLARE_DEPLOYMENT_SUMMARY.md similarity index 100% rename from docs/CLOUDFLARE_DEPLOYMENT_SUMMARY.md rename to docs/research/CLOUDFLARE_DEPLOYMENT_SUMMARY.md diff --git a/docs/CODE_QUALITY_METRICS.md b/docs/research/CODE_QUALITY_METRICS.md similarity index 100% rename from docs/CODE_QUALITY_METRICS.md rename to docs/research/CODE_QUALITY_METRICS.md diff --git a/docs/CODE_QUALITY_REPORT.md b/docs/research/CODE_QUALITY_REPORT.md similarity index 100% rename from docs/CODE_QUALITY_REPORT.md rename to docs/research/CODE_QUALITY_REPORT.md diff --git a/docs/COMMIT_SUMMARY.md b/docs/research/COMMIT_SUMMARY.md similarity index 100% rename from docs/COMMIT_SUMMARY.md rename to docs/research/COMMIT_SUMMARY.md diff --git a/docs/COMMUNITY.md b/docs/research/COMMUNITY.md similarity index 100% rename from docs/COMMUNITY.md rename to docs/research/COMMUNITY.md diff --git a/docs/CUDA_ARCHITECTURE.md b/docs/research/CUDA_ARCHITECTURE.md similarity index 100% rename from docs/CUDA_ARCHITECTURE.md rename to docs/research/CUDA_ARCHITECTURE.md diff --git a/docs/CUDA_ARCHITECTURE_SUMMARY.md b/docs/research/CUDA_ARCHITECTURE_SUMMARY.md similarity index 100% rename from docs/CUDA_ARCHITECTURE_SUMMARY.md rename to docs/research/CUDA_ARCHITECTURE_SUMMARY.md diff --git a/docs/CUDA_IMPLEMENTATION_ROADMAP.md b/docs/research/CUDA_IMPLEMENTATION_ROADMAP.md similarity index 100% rename from docs/CUDA_IMPLEMENTATION_ROADMAP.md rename to docs/research/CUDA_IMPLEMENTATION_ROADMAP.md diff --git a/docs/CUDA_QUICK_REFERENCE.md b/docs/research/CUDA_QUICK_REFERENCE.md similarity index 100% rename from docs/CUDA_QUICK_REFERENCE.md rename to docs/research/CUDA_QUICK_REFERENCE.md diff --git a/docs/DEPLOYMENT_CHECKLIST.md b/docs/research/DEPLOYMENT_CHECKLIST.md similarity index 100% rename from docs/DEPLOYMENT_CHECKLIST.md rename to docs/research/DEPLOYMENT_CHECKLIST.md diff --git a/docs/DEPLOYMENT_GUIDE.md b/docs/research/DEPLOYMENT_GUIDE.md similarity index 100% rename from docs/DEPLOYMENT_GUIDE.md rename to docs/research/DEPLOYMENT_GUIDE.md diff --git a/docs/DOCUMENTATION_REVIEW_REPORT.md b/docs/research/DOCUMENTATION_REVIEW_REPORT.md similarity index 100% rename from docs/DOCUMENTATION_REVIEW_REPORT.md rename to docs/research/DOCUMENTATION_REVIEW_REPORT.md diff --git a/docs/DODECET_PAPER_INTEGRATION.md b/docs/research/DODECET_PAPER_INTEGRATION.md similarity index 100% rename from docs/DODECET_PAPER_INTEGRATION.md rename to docs/research/DODECET_PAPER_INTEGRATION.md diff --git a/docs/GEOMETRIC_INTERPRETATION.md b/docs/research/GEOMETRIC_INTERPRETATION.md similarity index 100% rename from docs/GEOMETRIC_INTERPRETATION.md rename to docs/research/GEOMETRIC_INTERPRETATION.md diff --git a/docs/GPU_SIMULATION_FRAMEWORK_REPORT.md b/docs/research/GPU_SIMULATION_FRAMEWORK_REPORT.md similarity index 100% rename from docs/GPU_SIMULATION_FRAMEWORK_REPORT.md rename to docs/research/GPU_SIMULATION_FRAMEWORK_REPORT.md diff --git a/docs/HN_LAUNCH_PACKAGE.md b/docs/research/HN_LAUNCH_PACKAGE.md similarity index 100% rename from docs/HN_LAUNCH_PACKAGE.md rename to docs/research/HN_LAUNCH_PACKAGE.md diff --git a/docs/HN_LAUNCH_README.md b/docs/research/HN_LAUNCH_README.md similarity index 100% rename from docs/HN_LAUNCH_README.md rename to docs/research/HN_LAUNCH_README.md diff --git a/docs/HN_QUICK_REFERENCE.md b/docs/research/HN_QUICK_REFERENCE.md similarity index 100% rename from docs/HN_QUICK_REFERENCE.md rename to docs/research/HN_QUICK_REFERENCE.md diff --git a/docs/HN_README_POLISH_SUMMARY.md b/docs/research/HN_README_POLISH_SUMMARY.md similarity index 100% rename from docs/HN_README_POLISH_SUMMARY.md rename to docs/research/HN_README_POLISH_SUMMARY.md diff --git a/docs/HOLONOMIC_INFORMATION_THEORY.md b/docs/research/HOLONOMIC_INFORMATION_THEORY.md similarity index 100% rename from docs/HOLONOMIC_INFORMATION_THEORY.md rename to docs/research/HOLONOMIC_INFORMATION_THEORY.md diff --git a/docs/IMPLEMENTATION_GUIDE.md b/docs/research/IMPLEMENTATION_GUIDE.md similarity index 100% rename from docs/IMPLEMENTATION_GUIDE.md rename to docs/research/IMPLEMENTATION_GUIDE.md diff --git a/docs/IMPLEMENTATION_PLAN.md b/docs/research/IMPLEMENTATION_PLAN.md similarity index 100% rename from docs/IMPLEMENTATION_PLAN.md rename to docs/research/IMPLEMENTATION_PLAN.md diff --git a/docs/IMPROVEMENT_RECOMMENDATIONS.md b/docs/research/IMPROVEMENT_RECOMMENDATIONS.md similarity index 100% rename from docs/IMPROVEMENT_RECOMMENDATIONS.md rename to docs/research/IMPROVEMENT_RECOMMENDATIONS.md diff --git a/docs/INTERACTIVE_TUTORIALS.md b/docs/research/INTERACTIVE_TUTORIALS.md similarity index 100% rename from docs/INTERACTIVE_TUTORIALS.md rename to docs/research/INTERACTIVE_TUTORIALS.md diff --git a/docs/KDTREE_INTEGRATION_COMPLETE.md b/docs/research/KDTREE_INTEGRATION_COMPLETE.md similarity index 100% rename from docs/KDTREE_INTEGRATION_COMPLETE.md rename to docs/research/KDTREE_INTEGRATION_COMPLETE.md diff --git a/docs/LAUNCH_CHECKLIST.md b/docs/research/LAUNCH_CHECKLIST.md similarity index 100% rename from docs/LAUNCH_CHECKLIST.md rename to docs/research/LAUNCH_CHECKLIST.md diff --git a/docs/LAUNCH_PACKAGE_SUMMARY.md b/docs/research/LAUNCH_PACKAGE_SUMMARY.md similarity index 100% rename from docs/LAUNCH_PACKAGE_SUMMARY.md rename to docs/research/LAUNCH_PACKAGE_SUMMARY.md diff --git a/docs/LAUNCH_README.md b/docs/research/LAUNCH_README.md similarity index 100% rename from docs/LAUNCH_README.md rename to docs/research/LAUNCH_README.md diff --git a/docs/LINK_VALIDATION_REPORT.md b/docs/research/LINK_VALIDATION_REPORT.md similarity index 100% rename from docs/LINK_VALIDATION_REPORT.md rename to docs/research/LINK_VALIDATION_REPORT.md diff --git a/docs/LINK_VALIDATION_SUMMARY.md b/docs/research/LINK_VALIDATION_SUMMARY.md similarity index 100% rename from docs/LINK_VALIDATION_SUMMARY.md rename to docs/research/LINK_VALIDATION_SUMMARY.md diff --git a/docs/ML_DEMO.md b/docs/research/ML_DEMO.md similarity index 100% rename from docs/ML_DEMO.md rename to docs/research/ML_DEMO.md diff --git a/docs/NEXT_GEN_ARCHITECTURES.md b/docs/research/NEXT_GEN_ARCHITECTURES.md similarity index 100% rename from docs/NEXT_GEN_ARCHITECTURES.md rename to docs/research/NEXT_GEN_ARCHITECTURES.md diff --git a/docs/NEXT_GEN_ARCHITECTURE_SUMMARY.md b/docs/research/NEXT_GEN_ARCHITECTURE_SUMMARY.md similarity index 100% rename from docs/NEXT_GEN_ARCHITECTURE_SUMMARY.md rename to docs/research/NEXT_GEN_ARCHITECTURE_SUMMARY.md diff --git a/docs/NEXT_GEN_DELIVERABLES.md b/docs/research/NEXT_GEN_DELIVERABLES.md similarity index 100% rename from docs/NEXT_GEN_DELIVERABLES.md rename to docs/research/NEXT_GEN_DELIVERABLES.md diff --git a/docs/NEXT_GEN_QUICK_REFERENCE.md b/docs/research/NEXT_GEN_QUICK_REFERENCE.md similarity index 100% rename from docs/NEXT_GEN_QUICK_REFERENCE.md rename to docs/research/NEXT_GEN_QUICK_REFERENCE.md diff --git a/docs/NEXT_GEN_VISUAL_GUIDE.md b/docs/research/NEXT_GEN_VISUAL_GUIDE.md similarity index 100% rename from docs/NEXT_GEN_VISUAL_GUIDE.md rename to docs/research/NEXT_GEN_VISUAL_GUIDE.md diff --git a/docs/OPEN_QUESTIONS_RESEARCH.md b/docs/research/OPEN_QUESTIONS_RESEARCH.md similarity index 100% rename from docs/OPEN_QUESTIONS_RESEARCH.md rename to docs/research/OPEN_QUESTIONS_RESEARCH.md diff --git a/docs/PAPER.md b/docs/research/PAPER.md similarity index 100% rename from docs/PAPER.md rename to docs/research/PAPER.md diff --git a/docs/PERFORMANCE_GRAPHS.md b/docs/research/PERFORMANCE_GRAPHS.md similarity index 100% rename from docs/PERFORMANCE_GRAPHS.md rename to docs/research/PERFORMANCE_GRAPHS.md diff --git a/docs/PHASE1_COMPLETION_SUMMARY.md b/docs/research/PHASE1_COMPLETION_SUMMARY.md similarity index 100% rename from docs/PHASE1_COMPLETION_SUMMARY.md rename to docs/research/PHASE1_COMPLETION_SUMMARY.md diff --git a/docs/PRODUCTION_ENGINE.md b/docs/research/PRODUCTION_ENGINE.md similarity index 100% rename from docs/PRODUCTION_ENGINE.md rename to docs/research/PRODUCTION_ENGINE.md diff --git a/docs/PROGRESS_REPORT.md b/docs/research/PROGRESS_REPORT.md similarity index 100% rename from docs/PROGRESS_REPORT.md rename to docs/research/PROGRESS_REPORT.md diff --git a/docs/QUICKSTART.md b/docs/research/QUICKSTART.md similarity index 100% rename from docs/QUICKSTART.md rename to docs/research/QUICKSTART.md diff --git a/docs/QUICKSTART_5_MIN.md b/docs/research/QUICKSTART_5_MIN.md similarity index 100% rename from docs/QUICKSTART_5_MIN.md rename to docs/research/QUICKSTART_5_MIN.md diff --git a/docs/research/README.md b/docs/research/README.md new file mode 100644 index 0000000..e63b012 --- /dev/null +++ b/docs/research/README.md @@ -0,0 +1 @@ +Extended research documents — working papers, not required reading for using the library diff --git a/docs/README_DEPLOYMENT.md b/docs/research/README_DEPLOYMENT.md similarity index 100% rename from docs/README_DEPLOYMENT.md rename to docs/research/README_DEPLOYMENT.md diff --git a/docs/README_ENHANCEMENT_SUMMARY.md b/docs/research/README_ENHANCEMENT_SUMMARY.md similarity index 100% rename from docs/README_ENHANCEMENT_SUMMARY.md rename to docs/research/README_ENHANCEMENT_SUMMARY.md diff --git a/docs/RELEASE_NOTES.md b/docs/research/RELEASE_NOTES.md similarity index 100% rename from docs/RELEASE_NOTES.md rename to docs/research/RELEASE_NOTES.md diff --git a/docs/RESEARCH_COMPREHENSIVE_SUMMARY.md b/docs/research/RESEARCH_COMPREHENSIVE_SUMMARY.md similarity index 100% rename from docs/RESEARCH_COMPREHENSIVE_SUMMARY.md rename to docs/research/RESEARCH_COMPREHENSIVE_SUMMARY.md diff --git a/docs/RESEARCH_INDEX.md b/docs/research/RESEARCH_INDEX.md similarity index 100% rename from docs/RESEARCH_INDEX.md rename to docs/research/RESEARCH_INDEX.md diff --git a/docs/RIGIDITY_CURVATURE_DUALITY_PROOF.md b/docs/research/RIGIDITY_CURVATURE_DUALITY_PROOF.md similarity index 100% rename from docs/RIGIDITY_CURVATURE_DUALITY_PROOF.md rename to docs/research/RIGIDITY_CURVATURE_DUALITY_PROOF.md diff --git a/docs/ROUND4_COMPLETION_SUMMARY.md b/docs/research/ROUND4_COMPLETION_SUMMARY.md similarity index 100% rename from docs/ROUND4_COMPLETION_SUMMARY.md rename to docs/research/ROUND4_COMPLETION_SUMMARY.md diff --git a/docs/ROUND_2_POLISH_COMPLETE.md b/docs/research/ROUND_2_POLISH_COMPLETE.md similarity index 100% rename from docs/ROUND_2_POLISH_COMPLETE.md rename to docs/research/ROUND_2_POLISH_COMPLETE.md diff --git a/docs/SCHEMA_DESIGN.md b/docs/research/SCHEMA_DESIGN.md similarity index 100% rename from docs/SCHEMA_DESIGN.md rename to docs/research/SCHEMA_DESIGN.md diff --git a/docs/SIMULATION_FRAMEWORK_SUMMARY.md b/docs/research/SIMULATION_FRAMEWORK_SUMMARY.md similarity index 100% rename from docs/SIMULATION_FRAMEWORK_SUMMARY.md rename to docs/research/SIMULATION_FRAMEWORK_SUMMARY.md diff --git a/docs/SIMULATION_RESULTS.md b/docs/research/SIMULATION_RESULTS.md similarity index 100% rename from docs/SIMULATION_RESULTS.md rename to docs/research/SIMULATION_RESULTS.md diff --git a/docs/STRESS_TEST_SIMULATION.md b/docs/research/STRESS_TEST_SIMULATION.md similarity index 100% rename from docs/STRESS_TEST_SIMULATION.md rename to docs/research/STRESS_TEST_SIMULATION.md diff --git a/docs/SUPPLEMENTARY_MATERIALS.md b/docs/research/SUPPLEMENTARY_MATERIALS.md similarity index 100% rename from docs/SUPPLEMENTARY_MATERIALS.md rename to docs/research/SUPPLEMENTARY_MATERIALS.md diff --git a/docs/THEORETICAL_FOUNDATIONS_SUMMARY.md b/docs/research/THEORETICAL_FOUNDATIONS_SUMMARY.md similarity index 100% rename from docs/THEORETICAL_FOUNDATIONS_SUMMARY.md rename to docs/research/THEORETICAL_FOUNDATIONS_SUMMARY.md diff --git a/docs/THEORETICAL_GUARANTEES.md b/docs/research/THEORETICAL_GUARANTEES.md similarity index 100% rename from docs/THEORETICAL_GUARANTEES.md rename to docs/research/THEORETICAL_GUARANTEES.md diff --git a/docs/UX_IMPLEMENTATION_GUIDE.md b/docs/research/UX_IMPLEMENTATION_GUIDE.md similarity index 100% rename from docs/UX_IMPLEMENTATION_GUIDE.md rename to docs/research/UX_IMPLEMENTATION_GUIDE.md diff --git a/docs/UX_IMPROVEMENTS.md b/docs/research/UX_IMPROVEMENTS.md similarity index 100% rename from docs/UX_IMPROVEMENTS.md rename to docs/research/UX_IMPROVEMENTS.md diff --git a/docs/VALIDATION_EXPERIMENTS.md b/docs/research/VALIDATION_EXPERIMENTS.md similarity index 100% rename from docs/VALIDATION_EXPERIMENTS.md rename to docs/research/VALIDATION_EXPERIMENTS.md diff --git a/docs/VALIDATION_README.md b/docs/research/VALIDATION_README.md similarity index 100% rename from docs/VALIDATION_README.md rename to docs/research/VALIDATION_README.md diff --git a/docs/VALIDATION_SUITE.md b/docs/research/VALIDATION_SUITE.md similarity index 100% rename from docs/VALIDATION_SUITE.md rename to docs/research/VALIDATION_SUITE.md diff --git a/docs/VISUAL_DOCUMENTATION_SUMMARY.md b/docs/research/VISUAL_DOCUMENTATION_SUMMARY.md similarity index 100% rename from docs/VISUAL_DOCUMENTATION_SUMMARY.md rename to docs/research/VISUAL_DOCUMENTATION_SUMMARY.md diff --git a/docs/VISUAL_GUIDE.md b/docs/research/VISUAL_GUIDE.md similarity index 100% rename from docs/VISUAL_GUIDE.md rename to docs/research/VISUAL_GUIDE.md diff --git a/research/ADVANCED_SPATIAL_INDEXING.md b/docs/research/advanced/ADVANCED_SPATIAL_INDEXING.md similarity index 100% rename from research/ADVANCED_SPATIAL_INDEXING.md rename to docs/research/advanced/ADVANCED_SPATIAL_INDEXING.md diff --git a/research/CYCLE1_COMPLETION_SUMMARY.md b/docs/research/advanced/CYCLE1_COMPLETION_SUMMARY.md similarity index 100% rename from research/CYCLE1_COMPLETION_SUMMARY.md rename to docs/research/advanced/CYCLE1_COMPLETION_SUMMARY.md diff --git a/research/CYCLE1_DEEP_RESEARCH.md b/docs/research/advanced/CYCLE1_DEEP_RESEARCH.md similarity index 100% rename from research/CYCLE1_DEEP_RESEARCH.md rename to docs/research/advanced/CYCLE1_DEEP_RESEARCH.md diff --git a/research/CYCLE1_IDEATION.md b/docs/research/advanced/CYCLE1_IDEATION.md similarity index 100% rename from research/CYCLE1_IDEATION.md rename to docs/research/advanced/CYCLE1_IDEATION.md diff --git a/research/CYCLE1_INDEX.md b/docs/research/advanced/CYCLE1_INDEX.md similarity index 100% rename from research/CYCLE1_INDEX.md rename to docs/research/advanced/CYCLE1_INDEX.md diff --git a/research/CYCLE1_RESEARCH_NOTE.md b/docs/research/advanced/CYCLE1_RESEARCH_NOTE.md similarity index 100% rename from research/CYCLE1_RESEARCH_NOTE.md rename to docs/research/advanced/CYCLE1_RESEARCH_NOTE.md diff --git a/research/CYCLE1_SIMULATION.md b/docs/research/advanced/CYCLE1_SIMULATION.md similarity index 100% rename from research/CYCLE1_SIMULATION.md rename to docs/research/advanced/CYCLE1_SIMULATION.md diff --git a/research/CYCLE1_VISUALIZATION.md b/docs/research/advanced/CYCLE1_VISUALIZATION.md similarity index 100% rename from research/CYCLE1_VISUALIZATION.md rename to docs/research/advanced/CYCLE1_VISUALIZATION.md diff --git a/research/DODECET_INTEGRATION.md b/docs/research/advanced/DODECET_INTEGRATION.md similarity index 100% rename from research/DODECET_INTEGRATION.md rename to docs/research/advanced/DODECET_INTEGRATION.md diff --git a/research/DODECET_INTEGRATION_SUMMARY.md b/docs/research/advanced/DODECET_INTEGRATION_SUMMARY.md similarity index 100% rename from research/DODECET_INTEGRATION_SUMMARY.md rename to docs/research/advanced/DODECET_INTEGRATION_SUMMARY.md diff --git a/research/EXECUTIVE_SUMMARY.md b/docs/research/advanced/EXECUTIVE_SUMMARY.md similarity index 100% rename from research/EXECUTIVE_SUMMARY.md rename to docs/research/advanced/EXECUTIVE_SUMMARY.md diff --git a/research/FORMAL_VERIFICATION_ZERO_HALLUCINATION.md b/docs/research/advanced/FORMAL_VERIFICATION_ZERO_HALLUCINATION.md similarity index 100% rename from research/FORMAL_VERIFICATION_ZERO_HALLUCINATION.md rename to docs/research/advanced/FORMAL_VERIFICATION_ZERO_HALLUCINATION.md diff --git a/research/HIGH_DIMENSIONAL_CONSTRAINT_THEORY.md b/docs/research/advanced/HIGH_DIMENSIONAL_CONSTRAINT_THEORY.md similarity index 100% rename from research/HIGH_DIMENSIONAL_CONSTRAINT_THEORY.md rename to docs/research/advanced/HIGH_DIMENSIONAL_CONSTRAINT_THEORY.md diff --git a/research/PARALLEL_ALGORITHMS_DISTRIBUTED_CONSTRAINTS.md b/docs/research/advanced/PARALLEL_ALGORITHMS_DISTRIBUTED_CONSTRAINTS.md similarity index 100% rename from research/PARALLEL_ALGORITHMS_DISTRIBUTED_CONSTRAINTS.md rename to docs/research/advanced/PARALLEL_ALGORITHMS_DISTRIBUTED_CONSTRAINTS.md diff --git a/research/QUANTUM_CONSTRAINT_THEORY.md b/docs/research/advanced/QUANTUM_CONSTRAINT_THEORY.md similarity index 100% rename from research/QUANTUM_CONSTRAINT_THEORY.md rename to docs/research/advanced/QUANTUM_CONSTRAINT_THEORY.md diff --git a/research/README.md b/docs/research/advanced/README.md similarity index 100% rename from research/README.md rename to docs/research/advanced/README.md diff --git a/research/RESEARCH.md b/docs/research/advanced/RESEARCH.md similarity index 100% rename from research/RESEARCH.md rename to docs/research/advanced/RESEARCH.md diff --git a/research/RESEARCH_INDEX.md b/docs/research/advanced/RESEARCH_INDEX.md similarity index 100% rename from research/RESEARCH_INDEX.md rename to docs/research/advanced/RESEARCH_INDEX.md diff --git a/research/conversations/README.md b/docs/research/advanced/conversations/README.md similarity index 100% rename from research/conversations/README.md rename to docs/research/advanced/conversations/README.md diff --git a/research/conversations/deepseekconstrainttalk1.md b/docs/research/advanced/conversations/deepseekconstrainttalk1.md similarity index 100% rename from research/conversations/deepseekconstrainttalk1.md rename to docs/research/advanced/conversations/deepseekconstrainttalk1.md diff --git a/research/conversations/deepseekconstrainttalk2.md b/docs/research/advanced/conversations/deepseekconstrainttalk2.md similarity index 100% rename from research/conversations/deepseekconstrainttalk2.md rename to docs/research/advanced/conversations/deepseekconstrainttalk2.md diff --git a/research/conversations/deepseekconstrainttalk3.md b/docs/research/advanced/conversations/deepseekconstrainttalk3.md similarity index 100% rename from research/conversations/deepseekconstrainttalk3.md rename to docs/research/advanced/conversations/deepseekconstrainttalk3.md diff --git a/research/conversations/deepseekconstrainttalk4.md b/docs/research/advanced/conversations/deepseekconstrainttalk4.md similarity index 100% rename from research/conversations/deepseekconstrainttalk4.md rename to docs/research/advanced/conversations/deepseekconstrainttalk4.md diff --git a/research/conversations/deepseekconstrainttalk5.md b/docs/research/advanced/conversations/deepseekconstrainttalk5.md similarity index 100% rename from research/conversations/deepseekconstrainttalk5.md rename to docs/research/advanced/conversations/deepseekconstrainttalk5.md diff --git a/research/conversations/deepseekconstrainttalk6.md b/docs/research/advanced/conversations/deepseekconstrainttalk6.md similarity index 100% rename from research/conversations/deepseekconstrainttalk6.md rename to docs/research/advanced/conversations/deepseekconstrainttalk6.md diff --git a/research/conversations/deepseekconstrainttalk7.md b/docs/research/advanced/conversations/deepseekconstrainttalk7.md similarity index 100% rename from research/conversations/deepseekconstrainttalk7.md rename to docs/research/advanced/conversations/deepseekconstrainttalk7.md diff --git a/research/conversations/googleconstrainttalk.md b/docs/research/advanced/conversations/googleconstrainttalk.md similarity index 100% rename from research/conversations/googleconstrainttalk.md rename to docs/research/advanced/conversations/googleconstrainttalk.md diff --git a/research/conversations/grokconstrainttalk.md b/docs/research/advanced/conversations/grokconstrainttalk.md similarity index 100% rename from research/conversations/grokconstrainttalk.md rename to docs/research/advanced/conversations/grokconstrainttalk.md diff --git a/research/conversations/zconstrainttalktest.py.md b/docs/research/advanced/conversations/zconstrainttalktest.py.md similarity index 100% rename from research/conversations/zconstrainttalktest.py.md rename to docs/research/advanced/conversations/zconstrainttalktest.py.md diff --git a/research/dodecet_validation/DODECET_VALIDATION_SUMMARY.md b/docs/research/advanced/dodecet_validation/DODECET_VALIDATION_SUMMARY.md similarity index 100% rename from research/dodecet_validation/DODECET_VALIDATION_SUMMARY.md rename to docs/research/advanced/dodecet_validation/DODECET_VALIDATION_SUMMARY.md diff --git a/research/dodecet_validation/QUICK_REFERENCE.md b/docs/research/advanced/dodecet_validation/QUICK_REFERENCE.md similarity index 100% rename from research/dodecet_validation/QUICK_REFERENCE.md rename to docs/research/advanced/dodecet_validation/QUICK_REFERENCE.md diff --git a/research/dodecet_validation/README.md b/docs/research/advanced/dodecet_validation/README.md similarity index 100% rename from research/dodecet_validation/README.md rename to docs/research/advanced/dodecet_validation/README.md diff --git a/research/dodecet_validation/dodecet_validation.py b/docs/research/advanced/dodecet_validation/dodecet_validation.py similarity index 100% rename from research/dodecet_validation/dodecet_validation.py rename to docs/research/advanced/dodecet_validation/dodecet_validation.py diff --git a/research/dodecet_validation/geometric_validation.py b/docs/research/advanced/dodecet_validation/geometric_validation.py similarity index 100% rename from research/dodecet_validation/geometric_validation.py rename to docs/research/advanced/dodecet_validation/geometric_validation.py diff --git a/research/dodecet_validation/requirements.txt b/docs/research/advanced/dodecet_validation/requirements.txt similarity index 100% rename from research/dodecet_validation/requirements.txt rename to docs/research/advanced/dodecet_validation/requirements.txt diff --git a/research/dodecet_validation/results/VALIDATION_REPORT.txt b/docs/research/advanced/dodecet_validation/results/VALIDATION_REPORT.txt similarity index 100% rename from research/dodecet_validation/results/VALIDATION_REPORT.txt rename to docs/research/advanced/dodecet_validation/results/VALIDATION_REPORT.txt diff --git a/research/dodecet_validation/results/geometric_validation_plots.png b/docs/research/advanced/dodecet_validation/results/geometric_validation_plots.png similarity index 100% rename from research/dodecet_validation/results/geometric_validation_plots.png rename to docs/research/advanced/dodecet_validation/results/geometric_validation_plots.png diff --git a/research/dodecet_validation/results/geometric_validation_results.json b/docs/research/advanced/dodecet_validation/results/geometric_validation_results.json similarity index 100% rename from research/dodecet_validation/results/geometric_validation_results.json rename to docs/research/advanced/dodecet_validation/results/geometric_validation_results.json diff --git a/research/dodecet_validation/results/precision_ratio.png b/docs/research/advanced/dodecet_validation/results/precision_ratio.png similarity index 100% rename from research/dodecet_validation/results/precision_ratio.png rename to docs/research/advanced/dodecet_validation/results/precision_ratio.png diff --git a/research/dodecet_validation/results/validation_plots.png b/docs/research/advanced/dodecet_validation/results/validation_plots.png similarity index 100% rename from research/dodecet_validation/results/validation_plots.png rename to docs/research/advanced/dodecet_validation/results/validation_plots.png diff --git a/research/dodecet_validation/results/validation_results.json b/docs/research/advanced/dodecet_validation/results/validation_results.json similarity index 100% rename from research/dodecet_validation/results/validation_results.json rename to docs/research/advanced/dodecet_validation/results/validation_results.json diff --git a/research/dodecet_validation/results/validation_summary.csv b/docs/research/advanced/dodecet_validation/results/validation_summary.csv similarity index 100% rename from research/dodecet_validation/results/validation_summary.csv rename to docs/research/advanced/dodecet_validation/results/validation_summary.csv diff --git a/research/dodecet_validation/run_validation.py b/docs/research/advanced/dodecet_validation/run_validation.py similarity index 100% rename from research/dodecet_validation/run_validation.py rename to docs/research/advanced/dodecet_validation/run_validation.py diff --git a/docs/guides/Implementation_Guide_Constraint_Theory.md b/docs/research/guides/Implementation_Guide_Constraint_Theory.md similarity index 100% rename from docs/guides/Implementation_Guide_Constraint_Theory.md rename to docs/research/guides/Implementation_Guide_Constraint_Theory.md diff --git a/docs/guides/MATHEMATICAL_FOUNDATIONS.md b/docs/research/guides/MATHEMATICAL_FOUNDATIONS.md similarity index 100% rename from docs/guides/MATHEMATICAL_FOUNDATIONS.md rename to docs/research/guides/MATHEMATICAL_FOUNDATIONS.md diff --git a/docs/guides/ONBOARDING.md b/docs/research/guides/ONBOARDING.md similarity index 100% rename from docs/guides/ONBOARDING.md rename to docs/research/guides/ONBOARDING.md diff --git a/docs/guides/PERFORMANCE_OPTIMIZATION.md b/docs/research/guides/PERFORMANCE_OPTIMIZATION.md similarity index 100% rename from docs/guides/PERFORMANCE_OPTIMIZATION.md rename to docs/research/guides/PERFORMANCE_OPTIMIZATION.md diff --git a/docs/guides/PHASE_4_PLAN.md b/docs/research/guides/PHASE_4_PLAN.md similarity index 100% rename from docs/guides/PHASE_4_PLAN.md rename to docs/research/guides/PHASE_4_PLAN.md diff --git a/docs/guides/PRE_LAUNCH_FINAL_CHECKLIST.md b/docs/research/guides/PRE_LAUNCH_FINAL_CHECKLIST.md similarity index 100% rename from docs/guides/PRE_LAUNCH_FINAL_CHECKLIST.md rename to docs/research/guides/PRE_LAUNCH_FINAL_CHECKLIST.md diff --git a/docs/guides/PRODUCTION_VALIDATION_REPORT.md b/docs/research/guides/PRODUCTION_VALIDATION_REPORT.md similarity index 100% rename from docs/guides/PRODUCTION_VALIDATION_REPORT.md rename to docs/research/guides/PRODUCTION_VALIDATION_REPORT.md diff --git a/docs/guides/PRODUCTION_VALIDATION_REPORT_UPDATED.md b/docs/research/guides/PRODUCTION_VALIDATION_REPORT_UPDATED.md similarity index 100% rename from docs/guides/PRODUCTION_VALIDATION_REPORT_UPDATED.md rename to docs/research/guides/PRODUCTION_VALIDATION_REPORT_UPDATED.md diff --git a/docs/guides/QUICK_LAUNCH_CHECKLIST.md b/docs/research/guides/QUICK_LAUNCH_CHECKLIST.md similarity index 100% rename from docs/guides/QUICK_LAUNCH_CHECKLIST.md rename to docs/research/guides/QUICK_LAUNCH_CHECKLIST.md diff --git a/docs/guides/QUICK_REFERENCE.md b/docs/research/guides/QUICK_REFERENCE.md similarity index 100% rename from docs/guides/QUICK_REFERENCE.md rename to docs/research/guides/QUICK_REFERENCE.md diff --git a/docs/guides/QUICK_START_GUIDE.md b/docs/research/guides/QUICK_START_GUIDE.md similarity index 100% rename from docs/guides/QUICK_START_GUIDE.md rename to docs/research/guides/QUICK_START_GUIDE.md diff --git a/docs/guides/REDESIGN_PLAN.md b/docs/research/guides/REDESIGN_PLAN.md similarity index 100% rename from docs/guides/REDESIGN_PLAN.md rename to docs/research/guides/REDESIGN_PLAN.md diff --git a/docs/guides/RESEARCH_PAPERS.md b/docs/research/guides/RESEARCH_PAPERS.md similarity index 100% rename from docs/guides/RESEARCH_PAPERS.md rename to docs/research/guides/RESEARCH_PAPERS.md diff --git a/docs/guides/RESEARCH_SYNTHESIS_AND_PLAN.md b/docs/research/guides/RESEARCH_SYNTHESIS_AND_PLAN.md similarity index 100% rename from docs/guides/RESEARCH_SYNTHESIS_AND_PLAN.md rename to docs/research/guides/RESEARCH_SYNTHESIS_AND_PLAN.md diff --git a/docs/guides/ROUND_3_COMPLETION_SUMMARY.md b/docs/research/guides/ROUND_3_COMPLETION_SUMMARY.md similarity index 100% rename from docs/guides/ROUND_3_COMPLETION_SUMMARY.md rename to docs/research/guides/ROUND_3_COMPLETION_SUMMARY.md diff --git a/docs/guides/ROUND_4_TUTORIAL_COMPLETION_SUMMARY.md b/docs/research/guides/ROUND_4_TUTORIAL_COMPLETION_SUMMARY.md similarity index 100% rename from docs/guides/ROUND_4_TUTORIAL_COMPLETION_SUMMARY.md rename to docs/research/guides/ROUND_4_TUTORIAL_COMPLETION_SUMMARY.md diff --git a/docs/guides/ROUND_5_DELIVERABLES.md b/docs/research/guides/ROUND_5_DELIVERABLES.md similarity index 100% rename from docs/guides/ROUND_5_DELIVERABLES.md rename to docs/research/guides/ROUND_5_DELIVERABLES.md diff --git a/docs/guides/ROUND_5_IMPLEMENTATION_SUMMARY.md b/docs/research/guides/ROUND_5_IMPLEMENTATION_SUMMARY.md similarity index 100% rename from docs/guides/ROUND_5_IMPLEMENTATION_SUMMARY.md rename to docs/research/guides/ROUND_5_IMPLEMENTATION_SUMMARY.md diff --git a/docs/guides/ROUND_7_IMPLEMENTATION_SUMMARY.md b/docs/research/guides/ROUND_7_IMPLEMENTATION_SUMMARY.md similarity index 100% rename from docs/guides/ROUND_7_IMPLEMENTATION_SUMMARY.md rename to docs/research/guides/ROUND_7_IMPLEMENTATION_SUMMARY.md diff --git a/docs/guides/Research_Document_Advanced.md b/docs/research/guides/Research_Document_Advanced.md similarity index 100% rename from docs/guides/Research_Document_Advanced.md rename to docs/research/guides/Research_Document_Advanced.md diff --git a/docs/guides/SECURITY_AUDIT_ROUND_14.md b/docs/research/guides/SECURITY_AUDIT_ROUND_14.md similarity index 100% rename from docs/guides/SECURITY_AUDIT_ROUND_14.md rename to docs/research/guides/SECURITY_AUDIT_ROUND_14.md diff --git a/docs/guides/SIMULATOR_TEST_REPORT.md b/docs/research/guides/SIMULATOR_TEST_REPORT.md similarity index 100% rename from docs/guides/SIMULATOR_TEST_REPORT.md rename to docs/research/guides/SIMULATOR_TEST_REPORT.md diff --git a/docs/guides/TROUBLESHOOTING.md b/docs/research/guides/TROUBLESHOOTING.md similarity index 100% rename from docs/guides/TROUBLESHOOTING.md rename to docs/research/guides/TROUBLESHOOTING.md diff --git a/docs/guides/WEEK_2_COMPLETION_REPORT.md b/docs/research/guides/WEEK_2_COMPLETION_REPORT.md similarity index 100% rename from docs/guides/WEEK_2_COMPLETION_REPORT.md rename to docs/research/guides/WEEK_2_COMPLETION_REPORT.md diff --git a/docs/guides/WIREFRAME.md b/docs/research/guides/WIREFRAME.md similarity index 100% rename from docs/guides/WIREFRAME.md rename to docs/research/guides/WIREFRAME.md diff --git a/docs/guides/holograph.md b/docs/research/guides/holograph.md similarity index 100% rename from docs/guides/holograph.md rename to docs/research/guides/holograph.md diff --git a/papers/DODECET_CONSTRAINT_SYNTHESIS.md b/docs/research/papers/DODECET_CONSTRAINT_SYNTHESIS.md similarity index 100% rename from papers/DODECET_CONSTRAINT_SYNTHESIS.md rename to docs/research/papers/DODECET_CONSTRAINT_SYNTHESIS.md diff --git a/papers/DODECET_INTEGRATION_COMPLETION_REPORT.md b/docs/research/papers/DODECET_INTEGRATION_COMPLETION_REPORT.md similarity index 100% rename from papers/DODECET_INTEGRATION_COMPLETION_REPORT.md rename to docs/research/papers/DODECET_INTEGRATION_COMPLETION_REPORT.md diff --git a/papers/DODECET_INTEGRATION_FINAL_SUMMARY.md b/docs/research/papers/DODECET_INTEGRATION_FINAL_SUMMARY.md similarity index 100% rename from papers/DODECET_INTEGRATION_FINAL_SUMMARY.md rename to docs/research/papers/DODECET_INTEGRATION_FINAL_SUMMARY.md diff --git a/papers/DODECET_INTEGRATION_SUMMARY.md b/docs/research/papers/DODECET_INTEGRATION_SUMMARY.md similarity index 100% rename from papers/DODECET_INTEGRATION_SUMMARY.md rename to docs/research/papers/DODECET_INTEGRATION_SUMMARY.md diff --git a/papers/DODECET_INTEGRATION_VISUAL_SUMMARY.md b/docs/research/papers/DODECET_INTEGRATION_VISUAL_SUMMARY.md similarity index 100% rename from papers/DODECET_INTEGRATION_VISUAL_SUMMARY.md rename to docs/research/papers/DODECET_INTEGRATION_VISUAL_SUMMARY.md diff --git a/papers/DODECET_PYTHAGOREAN_SNAPPING_ADDENDUM.md b/docs/research/papers/DODECET_PYTHAGOREAN_SNAPPING_ADDENDUM.md similarity index 100% rename from papers/DODECET_PYTHAGOREAN_SNAPPING_ADDENDUM.md rename to docs/research/papers/DODECET_PYTHAGOREAN_SNAPPING_ADDENDUM.md diff --git a/papers/INDEX.md b/docs/research/papers/INDEX.md similarity index 100% rename from papers/INDEX.md rename to docs/research/papers/INDEX.md diff --git a/papers/README.md b/docs/research/papers/README.md similarity index 100% rename from papers/README.md rename to docs/research/papers/README.md diff --git a/papers/SUBMISSION_GUIDE.md b/docs/research/papers/SUBMISSION_GUIDE.md similarity index 100% rename from papers/SUBMISSION_GUIDE.md rename to docs/research/papers/SUBMISSION_GUIDE.md diff --git a/papers/paper1_constraint_theory_geometric_foundation.tex b/docs/research/papers/paper1_constraint_theory_geometric_foundation.tex similarity index 100% rename from papers/paper1_constraint_theory_geometric_foundation.tex rename to docs/research/papers/paper1_constraint_theory_geometric_foundation.tex diff --git a/papers/paper2_pythagorean_snapping.tex b/docs/research/papers/paper2_pythagorean_snapping.tex similarity index 100% rename from papers/paper2_pythagorean_snapping.tex rename to docs/research/papers/paper2_pythagorean_snapping.tex diff --git a/papers/paper3_deterministic_ai_practice.tex b/docs/research/papers/paper3_deterministic_ai_practice.tex similarity index 100% rename from papers/paper3_deterministic_ai_practice.tex rename to docs/research/papers/paper3_deterministic_ai_practice.tex diff --git a/docs/reports/AUDIT_REPORT.md b/docs/research/reports/AUDIT_REPORT.md similarity index 100% rename from docs/reports/AUDIT_REPORT.md rename to docs/research/reports/AUDIT_REPORT.md diff --git a/docs/reports/CELLULAR_VISION_SYNTHESIS.md b/docs/research/reports/CELLULAR_VISION_SYNTHESIS.md similarity index 100% rename from docs/reports/CELLULAR_VISION_SYNTHESIS.md rename to docs/research/reports/CELLULAR_VISION_SYNTHESIS.md diff --git a/docs/reports/CI_CD_GUIDE.md b/docs/research/reports/CI_CD_GUIDE.md similarity index 100% rename from docs/reports/CI_CD_GUIDE.md rename to docs/research/reports/CI_CD_GUIDE.md diff --git a/docs/reports/CLEANUP_SUMMARY.md b/docs/research/reports/CLEANUP_SUMMARY.md similarity index 100% rename from docs/reports/CLEANUP_SUMMARY.md rename to docs/research/reports/CLEANUP_SUMMARY.md diff --git a/docs/reports/CLEANUP_VISUAL_SUMMARY.md b/docs/research/reports/CLEANUP_VISUAL_SUMMARY.md similarity index 100% rename from docs/reports/CLEANUP_VISUAL_SUMMARY.md rename to docs/research/reports/CLEANUP_VISUAL_SUMMARY.md diff --git a/docs/reports/CODE_OF_CONDUCT.md b/docs/research/reports/CODE_OF_CONDUCT.md similarity index 100% rename from docs/reports/CODE_OF_CONDUCT.md rename to docs/research/reports/CODE_OF_CONDUCT.md diff --git a/docs/reports/COMPONENT_LIBRARY.md b/docs/research/reports/COMPONENT_LIBRARY.md similarity index 100% rename from docs/reports/COMPONENT_LIBRARY.md rename to docs/research/reports/COMPONENT_LIBRARY.md diff --git a/docs/reports/COMPREHENSIVE_POLISH_SUMMARY.md b/docs/research/reports/COMPREHENSIVE_POLISH_SUMMARY.md similarity index 100% rename from docs/reports/COMPREHENSIVE_POLISH_SUMMARY.md rename to docs/research/reports/COMPREHENSIVE_POLISH_SUMMARY.md diff --git a/docs/reports/CONSTRAINTTHEORY_PHASE_6_SUMMARY.md b/docs/research/reports/CONSTRAINTTHEORY_PHASE_6_SUMMARY.md similarity index 100% rename from docs/reports/CONSTRAINTTHEORY_PHASE_6_SUMMARY.md rename to docs/research/reports/CONSTRAINTTHEORY_PHASE_6_SUMMARY.md diff --git a/docs/reports/CONTRIBUTING.md b/docs/research/reports/CONTRIBUTING.md similarity index 100% rename from docs/reports/CONTRIBUTING.md rename to docs/research/reports/CONTRIBUTING.md diff --git a/docs/reports/CONTRIBUTORS.md b/docs/research/reports/CONTRIBUTORS.md similarity index 100% rename from docs/reports/CONTRIBUTORS.md rename to docs/research/reports/CONTRIBUTORS.md diff --git a/docs/reports/CUDA_FIX_SUMMARY.md b/docs/research/reports/CUDA_FIX_SUMMARY.md similarity index 100% rename from docs/reports/CUDA_FIX_SUMMARY.md rename to docs/research/reports/CUDA_FIX_SUMMARY.md diff --git a/docs/reports/CYBERPUNK_STYLING_REPORT.md b/docs/research/reports/CYBERPUNK_STYLING_REPORT.md similarity index 100% rename from docs/reports/CYBERPUNK_STYLING_REPORT.md rename to docs/research/reports/CYBERPUNK_STYLING_REPORT.md diff --git a/docs/reports/DESIGN_ANALYSIS.md b/docs/research/reports/DESIGN_ANALYSIS.md similarity index 100% rename from docs/reports/DESIGN_ANALYSIS.md rename to docs/research/reports/DESIGN_ANALYSIS.md diff --git a/docs/reports/DESIGN_SUMMARY.md b/docs/research/reports/DESIGN_SUMMARY.md similarity index 100% rename from docs/reports/DESIGN_SUMMARY.md rename to docs/research/reports/DESIGN_SUMMARY.md diff --git a/docs/reports/DESIGN_SYSTEM.md b/docs/research/reports/DESIGN_SYSTEM.md similarity index 100% rename from docs/reports/DESIGN_SYSTEM.md rename to docs/research/reports/DESIGN_SYSTEM.md diff --git a/docs/reports/DODECET_INTEGRATION_COMPLETE.md b/docs/research/reports/DODECET_INTEGRATION_COMPLETE.md similarity index 100% rename from docs/reports/DODECET_INTEGRATION_COMPLETE.md rename to docs/research/reports/DODECET_INTEGRATION_COMPLETE.md diff --git a/docs/reports/DODECET_QUICK_REFERENCE.md b/docs/research/reports/DODECET_QUICK_REFERENCE.md similarity index 100% rename from docs/reports/DODECET_QUICK_REFERENCE.md rename to docs/research/reports/DODECET_QUICK_REFERENCE.md diff --git a/docs/reports/ENHANCED_PYTHAGOREAN_3D_COMPLETION_REPORT.md b/docs/research/reports/ENHANCED_PYTHAGOREAN_3D_COMPLETION_REPORT.md similarity index 100% rename from docs/reports/ENHANCED_PYTHAGOREAN_3D_COMPLETION_REPORT.md rename to docs/research/reports/ENHANCED_PYTHAGOREAN_3D_COMPLETION_REPORT.md diff --git a/docs/reports/FINAL_HN_LAUNCH_DECISION.md b/docs/research/reports/FINAL_HN_LAUNCH_DECISION.md similarity index 100% rename from docs/reports/FINAL_HN_LAUNCH_DECISION.md rename to docs/research/reports/FINAL_HN_LAUNCH_DECISION.md diff --git a/docs/reports/FINAL_LAUNCH_DECISION.md b/docs/research/reports/FINAL_LAUNCH_DECISION.md similarity index 100% rename from docs/reports/FINAL_LAUNCH_DECISION.md rename to docs/research/reports/FINAL_LAUNCH_DECISION.md diff --git a/docs/reports/FINAL_VALIDATION_SUMMARY.md b/docs/research/reports/FINAL_VALIDATION_SUMMARY.md similarity index 100% rename from docs/reports/FINAL_VALIDATION_SUMMARY.md rename to docs/research/reports/FINAL_VALIDATION_SUMMARY.md diff --git a/docs/reports/FIX_SUMMARY.md b/docs/research/reports/FIX_SUMMARY.md similarity index 100% rename from docs/reports/FIX_SUMMARY.md rename to docs/research/reports/FIX_SUMMARY.md diff --git a/docs/reports/GOVERNANCE.md b/docs/research/reports/GOVERNANCE.md similarity index 100% rename from docs/reports/GOVERNANCE.md rename to docs/research/reports/GOVERNANCE.md diff --git a/docs/reports/review830.txt b/docs/research/reports/review830.txt similarity index 100% rename from docs/reports/review830.txt rename to docs/research/reports/review830.txt diff --git a/guides/README.md b/docs/research/style-guides/README.md similarity index 100% rename from guides/README.md rename to docs/research/style-guides/README.md diff --git a/guides/outline-guide.md b/docs/research/style-guides/outline-guide.md similarity index 100% rename from guides/outline-guide.md rename to docs/research/style-guides/outline-guide.md diff --git a/guides/whitepaper-style.md b/docs/research/style-guides/whitepaper-style.md similarity index 100% rename from guides/whitepaper-style.md rename to docs/research/style-guides/whitepaper-style.md diff --git a/voxel-research/constrainsolver.html b/docs/research/voxel/constrainsolver.html similarity index 100% rename from voxel-research/constrainsolver.html rename to docs/research/voxel/constrainsolver.html diff --git a/voxel-research/research1.md b/docs/research/voxel/research1.md similarity index 100% rename from voxel-research/research1.md rename to docs/research/voxel/research1.md diff --git a/voxel-research/research2.md b/docs/research/voxel/research2.md similarity index 100% rename from voxel-research/research2.md rename to docs/research/voxel/research2.md diff --git a/voxel-research/solver2.html b/docs/research/voxel/solver2.html similarity index 100% rename from voxel-research/solver2.html rename to docs/research/voxel/solver2.html diff --git a/docs/whitepaper/WHITEPAPER_ARXIV.md b/docs/research/whitepaper/WHITEPAPER_ARXIV.md similarity index 100% rename from docs/whitepaper/WHITEPAPER_ARXIV.md rename to docs/research/whitepaper/WHITEPAPER_ARXIV.md diff --git a/docs/whitepaper/WHITEPAPER_HN.md b/docs/research/whitepaper/WHITEPAPER_HN.md similarity index 100% rename from docs/whitepaper/WHITEPAPER_HN.md rename to docs/research/whitepaper/WHITEPAPER_HN.md diff --git a/docs/whitepaper/WHITEPAPER_INDEX.md b/docs/research/whitepaper/WHITEPAPER_INDEX.md similarity index 100% rename from docs/whitepaper/WHITEPAPER_INDEX.md rename to docs/research/whitepaper/WHITEPAPER_INDEX.md diff --git a/docs/whitepaper/WHITEPAPER_PUBLICATION.md b/docs/research/whitepaper/WHITEPAPER_PUBLICATION.md similarity index 100% rename from docs/whitepaper/WHITEPAPER_PUBLICATION.md rename to docs/research/whitepaper/WHITEPAPER_PUBLICATION.md diff --git a/docs/whitepaper/WHITEPAPER_WEBSITE.md b/docs/research/whitepaper/WHITEPAPER_WEBSITE.md similarity index 100% rename from docs/whitepaper/WHITEPAPER_WEBSITE.md rename to docs/research/whitepaper/WHITEPAPER_WEBSITE.md diff --git a/docs/wiki/01-Getting-Started/01-Installation-Guide.md b/docs/research/wiki/01-Getting-Started/01-Installation-Guide.md similarity index 100% rename from docs/wiki/01-Getting-Started/01-Installation-Guide.md rename to docs/research/wiki/01-Getting-Started/01-Installation-Guide.md diff --git a/docs/wiki/01-Getting-Started/02-Quick-Start-Tutorial.md b/docs/research/wiki/01-Getting-Started/02-Quick-Start-Tutorial.md similarity index 100% rename from docs/wiki/01-Getting-Started/02-Quick-Start-Tutorial.md rename to docs/research/wiki/01-Getting-Started/02-Quick-Start-Tutorial.md diff --git a/docs/wiki/02-Core-Concepts/01-Origin-Centric-Geometry.md b/docs/research/wiki/02-Core-Concepts/01-Origin-Centric-Geometry.md similarity index 100% rename from docs/wiki/02-Core-Concepts/01-Origin-Centric-Geometry.md rename to docs/research/wiki/02-Core-Concepts/01-Origin-Centric-Geometry.md diff --git a/docs/wiki/04-API-Reference/03-PythagoreanManifold-Class.md b/docs/research/wiki/04-API-Reference/03-PythagoreanManifold-Class.md similarity index 100% rename from docs/wiki/04-API-Reference/03-PythagoreanManifold-Class.md rename to docs/research/wiki/04-API-Reference/03-PythagoreanManifold-Class.md diff --git a/docs/wiki/09-Performance/01-Performance-Characteristics.md b/docs/research/wiki/09-Performance/01-Performance-Characteristics.md similarity index 100% rename from docs/wiki/09-Performance/01-Performance-Characteristics.md rename to docs/research/wiki/09-Performance/01-Performance-Characteristics.md diff --git a/docs/wiki/DOCUMENTATION_SUMMARY.md b/docs/research/wiki/DOCUMENTATION_SUMMARY.md similarity index 100% rename from docs/wiki/DOCUMENTATION_SUMMARY.md rename to docs/research/wiki/DOCUMENTATION_SUMMARY.md diff --git a/docs/wiki/VISUAL_ROADMAP.md b/docs/research/wiki/VISUAL_ROADMAP.md similarity index 100% rename from docs/wiki/VISUAL_ROADMAP.md rename to docs/research/wiki/VISUAL_ROADMAP.md diff --git a/docs/wiki/WIKI_INDEX.md b/docs/research/wiki/WIKI_INDEX.md similarity index 100% rename from docs/wiki/WIKI_INDEX.md rename to docs/research/wiki/WIKI_INDEX.md diff --git a/docs/wiki/WIKI_STRUCTURE_PLAN.md b/docs/research/wiki/WIKI_STRUCTURE_PLAN.md similarity index 100% rename from docs/wiki/WIKI_STRUCTURE_PLAN.md rename to docs/research/wiki/WIKI_STRUCTURE_PLAN.md diff --git a/launch/HN_COMMENT.md b/launch/HN_COMMENT.md new file mode 100644 index 0000000..b018997 --- /dev/null +++ b/launch/HN_COMMENT.md @@ -0,0 +1,23 @@ +# First Comment (Author) + +Post this as the first comment immediately after submitting. + +--- + +Hey HN — I'm a commercial fisherman in the Pacific Northwest who got into programming through spatial coordination problems on my vessel. This library came out of wanting deterministic answers to geometric queries — when you're coordinating gear positions, you can't afford floating-point drift. + +**What it does**: You give it a 2D vector, it snaps to the nearest exact Pythagorean triple (integer-ratio point on the unit circle) via KD-tree lookup in ~100ns. The output is always a valid geometric state by construction — there's no validation step because invalid states aren't in the search space. + +**What's interesting technically**: The manifold is the set of all primitive Pythagorean triples up to a density parameter, normalized to unit vectors. By restricting computation to this discrete lattice, you get exact rational arithmetic for free. The KD-tree gives you O(log n) lookup. Zero runtime dependencies — pure Rust. + +**What it's NOT**: It's not an AI system. It's not a general constraint solver. The "deterministic output" guarantee applies only within the geometric constraint engine — it's a narrow mathematical property, not a claim about AI safety. I was careful about this in the docs (see DISCLAIMERS.md). + +**Honest limitations**: +- 2D only right now. Higher dimensions are an open problem. +- ~1000 states at default density. It's a discrete lattice, not continuous. +- Research-grade. The math works and tests pass, but this hasn't been in production. +- The benchmarks compare against proper baselines (see BENCHMARKS.md), not straw men. + +**What I'd love feedback on**: Is the Pythagorean constraint useful for other domains? Are there better discrete lattices for higher dimensions? Would anyone actually use this for vector quantization or spatial indexing? + +The web demos at the repo let you drag points and watch them snap — that's the quickest way to get the intuition. diff --git a/launch/HN_FAQ.md b/launch/HN_FAQ.md new file mode 100644 index 0000000..76b3a9f --- /dev/null +++ b/launch/HN_FAQ.md @@ -0,0 +1,33 @@ +# Predicted HN Questions & Responses + +## "This is just a KD-tree?" + +Yes, the data structure is a standard KD-tree. The contribution isn't a novel search algorithm — it's the framework for constraining outputs to exact Pythagorean coordinates. The KD-tree is the implementation detail; the geometric constraint predicate (a² + b² = c²) being satisfied by construction is the interesting part. Think of it as a quantization scheme with a mathematical guarantee, not a faster nearest-neighbor search. + +## "The NumPy comparison is unfair" + +Agreed. The early benchmarks compared Rust KD-tree vs Python brute-force, which is apples-to-oranges. The updated BENCHMARKS.md compares against proper baselines — our ~100ns lookup is consistent with other Rust KD-tree crates like kiddo. The actual value proposition isn't speed, it's exact arithmetic on a discrete lattice. + +## "How does this relate to AI/LLMs?" + +It doesn't, directly. The geometric engine guarantees valid outputs within its constraint space — this is a narrow mathematical property about constraint satisfaction, not a claim about AI systems. The DISCLAIMERS.md is explicit about this. If you see "zero hallucination" language in older docs, that referred to a formal definition within the geometric model, not LLMs. + +## "Why 0.1.0?" + +Because it's honest. The core algorithms work and are tested, but it's 2D only, ~1000 states, and hasn't been used in production. Calling something 1.0 implies API stability and battle-testing we haven't earned yet. + +## "What's the practical use case?" + +Current: spatial agent coordination, exact geometric quantization, deterministic state machines where you need reproducible nearest-neighbor lookups with rational arithmetic. Speculative: vector quantization for embeddings, geometric attention mechanisms, discrete optimization. The speculative ones are unvalidated — contributions welcome. + +## "Why not just use kiddo/kd-tree/FLANN?" + +If you need general-purpose nearest-neighbor search, use those — they're excellent. This library is specifically for when you want the search space itself to be a set of geometrically valid states (Pythagorean triples). The constraint is baked into the manifold construction, not checked after the fact. + +## "The documentation is overkill for a KD-tree" + +Fair criticism of the earlier state. We've consolidated from 130+ docs files to a handful of essential ones. The mathematical foundations doc exists for those interested in the theory — it's not required reading for using the library. The README is ~150 lines. + +## "2D only? That's very limited" + +Yes, and we say so prominently. Extending to higher dimensions (3D Pythagorean quadruples, or more general lattices) is an open research question. If you have ideas here, we'd genuinely love to hear them. diff --git a/launch/HN_TITLE.md b/launch/HN_TITLE.md new file mode 100644 index 0000000..5ebdbfc --- /dev/null +++ b/launch/HN_TITLE.md @@ -0,0 +1,11 @@ +# HN Title Candidates + +Pick one. All follow HN conventions: factual, specific, no hype. + +1. `Show HN: Constraint Theory – Snap vectors to exact Pythagorean coordinates via KD-tree (Rust)` +2. `Show HN: A Rust library for deterministic geometric snapping with O(log n) lookup` +3. `Show HN: Pythagorean manifold snapping – exact arithmetic on a discrete geometric lattice` + +**Recommendation**: #1 — it says what it does, names the technique and language, and is specific enough to intrigue without overselling. + +**Avoid**: Any title with "hallucination", "can't lie", "280x faster", or "paradigm shift". HN will roast these. diff --git a/launch/README.md b/launch/README.md deleted file mode 100644 index 35e27bd..0000000 --- a/launch/README.md +++ /dev/null @@ -1,45 +0,0 @@ -# Launch Package - -This directory contains all materials related to the launch of the Constraint Theory project. - -## Contents - -### HackerNews Launch -- [`hackerrnews/announcement.md`](hackerrnews/announcement.md) - Official HackerNews launch announcement - -### Launch Checklists -- [`checklists/launch-day.md`](checklists/launch-day.md) - Launch day checklist and procedures - -### Press Materials -- [`press/press-kit.md`](press/press-kit.md) - Press kit for media outreach -- [`press/demo-script.md`](press/demo-script.md) - Demo video script - -### Community Setup -- [`community/discord-setup.md`](community/discord-setup.md) - Discord community setup guide - -## Launch Strategy - -The launch materials are organized by purpose: - -1. **HackerNews** - Technical community launch -2. **Press** - Media outreach and publicity -3. **Community** - Discord and engagement setup -4. **Checklists** - Launch day procedures - -## Quick Links - -- [Launch Summary](../LAUNCH_PACKAGE_SUMMARY.md) - Overall launch overview -- [Launch Package Index](../LAUNCH_PACKAGE_INDEX.md) - Complete package navigation -- [Executive Summary](../EXECUTIVE_SUMMARY.md) - Executive briefing - -## Usage - -These materials are designed for: -- Pre-launch planning and preparation -- Launch day execution -- Post-launch follow-up and engagement - ---- - -**Last Updated:** 2026-03-16 -**Status:** Active - Launch preparation phase diff --git a/launch/checklists/launch-day.md b/launch/checklists/launch-day.md deleted file mode 100644 index 106b18f..0000000 --- a/launch/checklists/launch-day.md +++ /dev/null @@ -1,388 +0,0 @@ -# Constraint Theory - Launch Day Checklist - -**Launch Date:** TBD (Recommended: Tuesday-Thursday, 8-11 AM PST) -**Repository:** https://github.com/SuperInstance/Constraint-Theory -**Status:** Ready for Launch - ---- - -## 📅 1 WEEK BEFORE LAUNCH - -### Monday-Thursday: Finalize Materials - -- [ ] **Review all documentation** - - [ ] README.md is clear and compelling - - [ ] FAQ.md covers common questions - - [ ] CONTRIBUTING.md has clear guidelines - - [ ] All links work correctly - -- [ ] **Prepare press kit** - - [ ] PRESS_KIT.md is complete - - [ ] Logo files created (SVG, PNG light/dark) - - [ ] Screenshots captured (10+ images) - - [ ] Demo video recorded and edited - - [ ] Press release finalized - -- [ ] **Test all demos** - - [ ] Python simulation runs without errors - - [ ] Rust engine builds successfully - - [ ] All benchmarks reproduce - - [ ] Visualizations work correctly - -- [ ] **Set up monitoring** - - [ ] GitHub repository insights enabled - - [ ] Google Analytics for demo (if applicable) - - [ ] Social media tracking configured - - [ ] Alert system for server issues - -### Friday: Team Briefing - -- [ ] **Conduct team meeting** - - [ ] Review launch timeline - - [ ] Assign roles and responsibilities - - [ ] Practice response to common questions - - [ ] Distribute response templates - -- [ ] **Final technical checks** - - [ ] All tests pass - - [ ] Documentation builds successfully - - [ ] No critical bugs outstanding - - [ ] Dependencies are up to date - ---- - -## 🚀 1 DAY BEFORE LAUNCH - -### Morning: Final Testing - -- [ ] **Load test all systems** - - [ ] GitHub repository (mock traffic) - - [ ] Demo web app (simulate 1K+ users) - - [ ] Documentation site (check loading speed) - - [ ] Any other services - -- [ ] **Verify all links** - - [ ] README links are correct - - [ ] Documentation links work - - [ ] External resources accessible - - [ ] Social media links valid - -### Afternoon: Launch Readiness - -- [ ] **Prepare social media** - - [ ] Tweet drafted (280 characters) - - [ ] LinkedIn post written - - [ ] Reddit posts prepared (r/MachineLearning, r/programming) - - [ ] Images/videos attached - -- [ ] **Set up tools** - - [ ] GitHub notifications enabled - - [ ] Discord server ready (channels, roles, welcome message) - - [ ] Email filters configured - - [ ] Browser tabs with key resources open - -### Evening: Rest & Prepare - -- [ ] **Personal preparation** - - [ ] Get good sleep 😴 - - [ ] Prepare snacks and coffee ☕ - - [ ] Charge devices - - [ ] Inform family/friends (busy day tomorrow) - -- [ ] **Final checks** - - [ ] Phone charged and nearby - - [ ] Laptop ready - - [ ] Backup internet connection available - - [ ] Emergency contacts ready - ---- - -## 🎯 LAUNCH DAY TIMELINE - -### 7:00 AM PST - Final Pre-Launch - -- [ ] **Wake up and prepare** ☕ - - [ ] Fresh coffee brewed - - [ ] Laptop booted and ready - - [ ] All relevant tabs open (GitHub, HN, Discord, etc.) - - [ ] Phone charged and nearby - -- [ ] **Final system checks** - - [ ] GitHub repository accessible - - [ ] All demo links work - - [ ] Documentation loads quickly - - [ ] No emergency issues - -### 8:00 AM PST - LAUNCH! 🚀 - -- [ ] **Submit HN post** - - [ ] Use prepared title (Option 1 recommended) - - [ ] Copy prepared body text - - [ ] Include all links - - [ ] Double-check for typos - - [ ] Submit! - -- [ ] **Immediate follow-up** - - [ ] Copy HN post URL - - [ ] Bookmark for quick access - - [ ] Set up refresh (don't spam, check every 30-60 seconds) - -### 8:05 AM PST - Social Media Blitz - -- [ ] **Twitter/X** - - [ ] Post tweet with link to HN post - - [ ] Include key metrics: "74 ns, 280x, zero hallucinations" - - [ ] Attach screenshot or GIF - - [ ] Reply to any immediate engagement - -- [ ] **LinkedIn** - - [ ] Post professional announcement - - [ ] Tag relevant team members - - [ ] Include demo link - - [ ] Follow up with comments - -### 8:10 AM PST - Cross-Posting - -- [ ] **Reddit posts** - - [ ] r/MachineLearning - Link to HN discussion - - [ ] r/programming - Technical details - - [ ] r/rust - Rust implementation focus - - [ ] Follow subreddit rules carefully! - -- [ ] **Other platforms** - - [ ] Discord communities (if allowed) - - [ ] Slack channels (work-related) - - [ ] Relevant forums (carefully, no spam) - -### 8:30 AM PST - Press Outreach (Optional) - -- [ ] **Email tech press** - - [ ] MIT Technology Review - - [ ] Ars Technica - - [ ] The Verge - - [ ] Wired (if appropriate) - -- [ ] **Use PRESS_KIT.md templates** - - [ ] Professional subject line - - [ ] Concise pitch - - [ ] Link to press kit - - [ ] Offer interviews - -### All Day - Community Engagement 🔥 - -- [ ] **HN Comment Response (Priority #1)** - - [ ] Respond to EVERY comment - - [ ] Within 5 minutes if possible - - [ ] Be helpful, humble, honest - - [ ] Use response templates from HACKERNEWS_ANNOUNCEMENT.md - - [ ] Upvote good questions/comments - -- [ ] **GitHub Issues** - - [ ] Respond to all issues within 1 hour - - [ ] Label appropriately (bug, enhancement, question) - - [ ] Assign to team members - - [ ] Thank contributors - -- [ ] **Discord/Community** - - [ ] Welcome new members - - [ ] Answer questions in real-time - - [ ] Keep conversation positive - - [ ] Escalate issues to team - -- [ ] **Social Media** - - [ ] Monitor mentions - - [ ] Reply to comments - - [ ] Retweet/quote positive feedback - - [ ] Share milestones (100 stars, etc.) - -### Throughout the Day - -- [ ] **Hourly checks** - - [ ] HN post rank and points - - [ ] GitHub stars count - - [ ] Server status (if applicable) - - [ ] Team member status - -- [ ] **Content updates** - - [ ] Update README if clarifications needed - - [ ] Add FAQ items from questions - - [ ] Fix any bugs discovered - - [ ] Clarify documentation - -- [ ] **Team coordination** - - [ ] Check in with team members - - [ ] Hand off coverage if needed - - [ ] Share updates and learnings - - [ ] Celebrate milestones! 🎉 - ---- - -## 📊 LAUNCH DAY SUCCESS METRICS - -### Hourly Targets - -| Time (PST) | HN Points | HN Comments | GitHub Stars | -|-----------|-----------|-------------|--------------| -| 8:00 AM | 0 | 0 | 0 | -| 9:00 AM | 50+ | 20+ | 50+ | -| 10:00 AM | 100+ | 50+ | 100+ | -| 11:00 AM | 150+ | 80+ | 200+ | -| 12:00 PM | 200+ | 100+ | 300+ | -| 1:00 PM | 200+ | 120+ | 400+ | -| 2:00 PM | 200+ | 130+ | 450+ | -| 5:00 PM | 200+ | 140+ | 500+ | - -### End of Day Targets - -- [ ] **HackerNews:** - - [ ] 200+ points - - [ ] 100+ comments - - [ ] Front page achieved (ideally top 5) - -- [ ] **GitHub:** - - [ ] 500+ stars - - [ ] 100+ forks - - [ ] 10+ issues opened - - [ ] 5+ PRs submitted - -- [ ] **Community:** - - [ ] 100+ Discord members - - [ ] 50+ Twitter followers - - [ ] 20+ LinkedIn reactions - - [ ] Positive sentiment overall - ---- - -## 🎯 POST-LAUNCH (Day 1-3) - -### Day 1 Afternoon: Follow-up - -- [ ] **Thank the community** - - [ ] Reply to HN post with thanks - - [ ] Update README with launch success - - [ ] Post recap on social media - - [ ] Thank early contributors - -- [ ] **Address issues** - - [ ] Fix any bugs discovered - - [ ] Clarify confusing documentation - - [ ] Respond to all outstanding questions - - [ ] Update FAQ with learnings - -### Day 2: Content & Momentum - -- [ ] **Create follow-up content** - - [ ] Blog post: "24 Hours of Open Source" - - [ ] Tutorial: "Getting Started" - - [ ] Video: "Building Your First Constraint Engine" - - [ ] Share learnings and insights - -- [ ] **Continue engagement** - - [ ] Respond to new comments - - [ ] Merge good PRs - - [ ] Welcome new contributors - - [ ] Plan next roadmap items - -### Day 3: Planning Next Steps - -- [ ] **Analyze launch results** - - [ ] What went well? - - [ ] What could be improved? - - [ ] What surprised us? - - [ ] What are people asking for? - -- [ ] **Prioritize feedback** - - [ ] Top requested features - - [ ] Common pain points - - [ ] Most enthusiastic contributors - - [ ] Interesting use cases - -- [ ] **Plan next sprint** - - [ ] Schedule contributor sprint - - [ ] Prioritize roadmap items - - [ ] Assign tasks to team - - [ ] Set up regular syncs - ---- - -## 🚨 EMERGENCY PROCEDURES - -### If Server Crashes - -1. **Stay calm** - This is actually a good problem (too much interest!) -2. **Communicate** - Update HN post with status -3. **Fix** - GitHub README has all key info, docs are static -4. **Resume** - Be transparent: "Overwhelmed—thanks for interest!" -5. **Learn** - Scale up for next time - -### If Negative Feedback Emerges - -1. **Listen** - Understand the criticism -2. **Acknowledge** - Admit if something is wrong -3. **Respond** - With evidence, not emotion -4. **Improve** - Fix legitimate issues -5. **Move on** - Don't engage trolls - -### If Team Burnout - -1. **Rotate** - Hand off coverage -2. **Rest** - Take breaks -3. **Prioritize** - Focus on HN first, other platforms second -4. **Ask for help** - Community can help answer questions -5. **Celebrate** - Remember this is a success! - ---- - -## ✅ FINAL CHECKLIST - -### 1 Hour Before Launch - -- [ ] Coffee ready ☕ -- [ ] Laptop booted -- [ ] All tabs open (HN, GitHub, Discord, etc.) -- [ ] Phone charged and nearby -- [ ] Backup internet ready -- [ ] Team on standby -- [ ] Response templates loaded -- [ ] Deep breaths 🧘 - -### GO TIME 🚀 - -- [ ] Submit HN post -- [ ] Monitor for first comment -- [ ] Engage authentically -- [ ] Have fun! -- [ ] Make history! - ---- - -## 🎉 CELEBRATION - -### When Targets Hit - -- [ ] 100 HN points - Quick celebration! 🎊 -- [ ] 200 HN points - Team toast! 🥂 -- [ ] Front page - Screenshot it! 📸 -- [ ] 500 GitHub stars - Share milestone! ⭐ -- [ ] End of day - Rest well! 😴 - -### Remember - -**This is a success no matter what.** You've: -- Built something revolutionary -- Open-sourced it for the world -- Shared rigorous mathematics -- Invited collaboration -- Taken a bold leap - -**The revolution is not in the computing, but in the geometry.** - -Good luck! 🚀 - ---- - -**Last Updated:** 2026-03-16 -**Launch Date:** TBD -**Status:** Ready for Launch -**Confidence:** High - All preparations complete -**Motto:** "When computation becomes geometry, uncertainty becomes impossible." diff --git a/launch/community/discord-setup.md b/launch/community/discord-setup.md deleted file mode 100644 index 75e1949..0000000 --- a/launch/community/discord-setup.md +++ /dev/null @@ -1,773 +0,0 @@ -# Constraint Theory - Community Setup Guide - -**Repository:** https://github.com/SuperInstance/Constraint-Theory -**Status:** Community Setup in Progress -**Last Updated:** 2026-03-16 - ---- - -## 🎯 COMMUNITY VISION - -### Mission - -Build a vibrant, inclusive community around Constraint Theory where: -- Mathematicians explore geometric foundations -- Engineers push performance boundaries -- Researchers discover new applications -- Enthusiasts learn and contribute -- Everyone feels welcome and valued - -### Values - -- **Rigor:** Mathematical proofs, verified benchmarks -- **Openness:** Transparent development, open-source code -- **Inclusivity:** Welcome all backgrounds and skill levels -- **Collaboration:** Work together, share credit generously -- **Excellence:** High standards for code, math, and discourse - ---- - -## 💬 DISCORD SERVER SETUP - -### Server Structure - -``` -Constraint Theory Community -│ -├── 📢 **announcements** -│ └── Read-only for official announcements -│ -├── 🎉 **introductions** -│ └── Introduce yourself, share your background -│ -├── 💬 **general** -│ └── General discussion, hangout -│ -├── 🧮 **mathematics** -│ ├── #theorems - Discuss mathematical results -│ ├── #proofs - Share and review proofs -│ ├── #questions - Ask math questions -│ └── #open-problems - Work on unsolved problems -│ -├── 💻 **engineering** -│ ├── #rust-core - Rust engine development -│ ├── #cuda-gpu - GPU acceleration -│ ├── #typescript-api - API layer -│ ├── #performance - Benchmarks and optimization -│ └── #help - Engineering help and support -│ -├── 🔬 **research** -│ ├── #applications - Real-world use cases -│ ├── #experiments - Share experimental results -│ ├── #papers - Discuss publications -│ └── #collaboration - Find research partners -│ -├── 📚 **learning** -│ ├── #tutorials - Share tutorials and guides -│ ├── #resources - Helpful links and materials -│ ├── #showcase - Show off your projects -│ └── #study-group - Organize study sessions -│ -├── 🤝 **contributors** -│ ├── #good-first-issues - Starter tasks -│ ├── #contributor-lounge - Chat for contributors -│ ├── #code-review - Request reviews -│ └── #releases - Announce releases -│ -└── 🛠️ **meta** - ├── #feedback - Community feedback - ├── #bugs - Bug reports - ├── #features - Feature requests - └── #moderation-admin - Admin only -``` - -### Channel Descriptions - -#### 📢 announcements -**Description:** Official announcements only - read-only channel -**Topics:** Releases, events, major milestones -**Posting:** Admins only -**Notification:** All members - -#### 🎉 introductions -**Description:** Introduce yourself to the community! -**Template:** -``` -Name: -Background: (mathematician, engineer, researcher, student, etc.) -Interests: (what excites you about constraint theory?) -Goals: (what do you want to do/learn?) -Fun fact: (optional) -``` - -#### 💬 general -**Description:** Hang out, chat, anything constraint theory related -**Topics:** Casual conversation, ideas, news -**Guidelines:** Be respectful, stay on topic - -#### 🧮 mathematics -**Description:** Mathematical discussion and research -**Subchannels:** -- **#theorems:** Share and discuss theorems -- **#proofs:** Collaborate on proofs -- **#questions:** Ask math questions (no question too basic!) -- **#open-problems:** Work on unsolved problems together - -**Guidelines:** -- Rigorous discussion only -- Show your work -- Be patient with explanations -- Cite sources when applicable - -#### 💻 engineering -**Description:** Technical implementation discussion -**Subchannels:** -- **#rust-core:** Core Rust engine development -- **#cuda-gpu:** CUDA and GPU acceleration -- **#typescript-api:** TypeScript API layer -- **#performance:** Benchmarks, profiling, optimization -- **#help:** Ask for help (no question too basic!) - -**Guidelines:** -- Share code snippets for context -- Use GitHub issues for bugs/features -- Be helpful and patient -- Celebrate performance wins! ⚡ - -#### 🔬 research -**Description:** Applications, experiments, papers -**Subchannels:** -- **#applications:** Real-world use cases -- **#experiments:** Share experimental results -- **#papers:** Discuss publications (reading and writing) -- **#collaboration:** Find research partners - -**Guidelines:** -- Share methodologies and results -- Welcome reproducibility checks -- Collaborate openly -- Celebrate discoveries! 🔬 - -#### 📚 learning -**Description:** Educational resources and tutorials -**Subchannels:** -- **#tutorials:** Share and discuss tutorials -- **#resources:** Links to helpful materials -- **#showcase:** Show off your constraint theory projects -- **#study-group:** Organize study sessions - -**Guidelines:** -- All levels welcome -- Ask questions freely -- Share what you learn -- Help others learn - -#### 🤝 contributors -**Description:** For project contributors -**Subchannels:** -- **#good-first-issues:** Starter tasks for new contributors -- **#contributor-lounge:** Chat for active contributors -- **#code-review:** Request and provide code reviews -- **#releases:** Discuss releases and milestones - -**Guidelines:** -- Be constructive in reviews -- Ask for help when needed -- Celebrate contributions! 🎉 - ---- - -## 👥 ROLES & PERMISSIONS - -### Hierarchy - -``` -👑 Founders (SuperInstance team) - └── Full access, all permissions - -🛡️ Moderators - └── Manage channels, messages, members - └── Cannot change server settings - -⭐ Contributors - └── Access to contributor channels - └── Special role in Discord - -👥 Members - └── Standard access - └── Most channels visible - -🌟 Verified Experts - └── Mathematicians, engineers, researchers - └── Special badge, not additional permissions -``` - -### Role Definitions - -#### 👑 Founders -**Who:** Core SuperInstance team -**Permissions:** Everything -**Responsibilities:** -- Server administration -- Strategic direction -- Major decisions -- Community vision - -#### 🛡️ Moderators -**Who:** Trusted community members -**Permissions:** -- Manage messages -- Mute/warn/ban when necessary -- Manage channels -- Assign roles - -**Responsibilities:** -- Keep discussions civil -- Enforce guidelines -- Help resolve conflicts -- Escalate to founders when needed - -**Expectations:** -- Active participation -- Fair and consistent -- Good judgment -- Community-focused - -#### ⭐ Contributors -**Who:** Anyone with merged PR or substantial contribution -**Permissions:** -- Access to contributor channels -- Special badge -- Invited to contributor events - -**How to get:** -- Submit a PR that gets merged -- Make substantial documentation contribution -- Help with research/experiments -- Be recognized by founders - -#### 👥 Members -**Who:** Everyone who joins the Discord -**Permissions:** -- Most channels visible -- Can participate in discussions -- Can use bot commands - -#### 🌟 Verified Experts -**Who:** Mathematicians, engineers, researchers with credentials -**Permissions:** -- No additional permissions (just a badge) -- Increased credibility in discussions -- Invitation to expert discussions - -**How to get:** -- Contact moderators with credentials -- PhD in relevant field, OR -- Industry experience, OR -- Substantial open-source contributions - ---- - -## 🤖 BOTS & AUTOMATION - -### Essential Bots - -#### 1. MEE6 or Dyno - Moderation -**Features:** -- Auto-moderation (spam, toxicity) -- Custom commands -- Leveling system -- Welcome messages - -**Setup:** -```python -# Welcome message -Welcome {user} to Constraint Theory! 🎉 - -Please introduce yourself in #introductions -Check out #announcements for updates -Read #guidelines for community norms - -Start here: https://github.com/SuperInstance/Constraint-Theory - -The revolution is not in the computing, but in the geometry. -``` - -#### 2. GitHub Bot - Repository Integration -**Features:** -- Post new issues to Discord -- Post new PRs to Discord -- Post release announcements -- Link Discord discussions to GitHub - -**Setup:** -- Use GitHub webhooks -- Or use existing bot like GitHub Discord Bot - -#### 3. Poll Bot - Community Decisions -**Features:** -- Create polls for voting -- Anonymous or attributed -- Time-limited voting - -**Use for:** -- Feature prioritization -- Design decisions (non-critical) -- Community event planning -- Fun polls - -#### 4. LaTeX Bot - Mathematics -**Features:** -- Render LaTeX in Discord -- Preview mathematical expressions -- Help with math notation - -**Example:** -``` -!latex P(\text{hallucination}) = 0 -[renders formatted equation] -``` - -### Custom Commands - -#### !info -**Response:** -``` -Constraint Theory: Computing That Can't Lie 🚀 - -📊 Performance: 74 ns/op, 280x speedup -🧮 Mathematics: Zero hallucination (proved) -💻 Code: Rust core + TypeScript API -📚 Docs: 150+ pages of rigorous math - -🔗 GitHub: https://github.com/SuperInstance/Constraint-Theory -❓ FAQ: https://github.com/SuperInstance/Constraint-Theory/blob/main/FAQ.md - -The revolution is not in the computing, but in the geometry. -``` - -#### !contribute -**Response:** -``` -Want to contribute? Here's how: - -🧮 Mathematicians: Extend theorems, prove new results -💻 Engineers: Implement features, optimize performance -🔬 Researchers: Explore applications, validate workloads -📝 Writers: Improve docs, create tutorials - -📖 Guide: https://github.com/SuperInstance/Constraint-Theory/blob/main/CONTRIBUTING.md -🐛 First Issues: Check #good-first-issues -❓ Questions: Ask in #help or #questions - -Join the revolution! 🚀 -``` - -#### !papers -**Response:** -``` -Key Mathematical Documents: - -📐 THEORETICAL_GUARANTEES.md - Zero hallucination proof -📐 MATHEMATICAL_FOUNDATIONS_DEEP_DIVE.md - Complete math -📐 GEOMETRIC_INTERPRETATION.md - Visual explanations -📐 OPEN_QUESTIONS_RESEARCH.md - Open problems - -📊 Engineering Documents: -📊 CUDA_ARCHITECTURE.md - GPU implementation -📊 BASELINE_BENCHMARKS.md - Performance results -📊 IMPLEMENTATION_GUIDE.md - Roadmap - -All: https://github.com/SuperInstance/Constraint-Theory -``` - ---- - -## 📋 GUIDELINES & RULES - -### Community Guidelines - -#### Be Excellent to Each Other -- Respectful discourse at all times -- Disagree without being disagreeable -- Assume good faith -- Welcome newcomers warmly - -#### Rigorous but Accessible -- Mathematics must be rigorous -- Explanations should be clear -- No question too basic -- Help others learn - -#### Open Collaboration -- Share work openly -- Give credit generously -- Welcome feedback -- Build on each other's work - -#### Focus on Substance -- Ideas over status -- Evidence over assertion -- Proofs over claims -- Code over talk - -### Prohibited Behaviors - -- ❌ Personal attacks or insults -- ❌ Harassment or discrimination -- ❌ Spam or self-promotion -- ❌ Plagiarism or claiming others' work -- ❌ Misrepresenting credentials or results -- ❌ Trolling or disruptive behavior - -### Enforcement - -**First offense:** Warning from moderator -**Second offense:** Temporary mute (24 hours) -**Third offense:** Temporary ban (7 days) -**Severe offenses:** Permanent ban - -**Appeals:** Contact founders with evidence - ---- - -## 🎉 EVENTS & ACTIVITIES - -### Regular Events - -#### Weekly Office Hours -**When:** Thursdays, 2-3 PM PST -**What:** Q&A with core team -**Where:** #general voice channel -**Format:** Open discussion, questions answered live - -#### Monthly Contributor Sprint -**When:** First Saturday of each month -**What:** Collaborative coding session -**Where:** #contributors + voice -**Format:** 4-hour sprint, show-and-tell at end - -#### Bi-Weekly Math Seminar -**When:** 2nd and 4th Wednesday, 5-6 PM PST -**What:** Deep dive into mathematical topic -**Where:** #mathematics -**Format:** Presentation + discussion - -#### Quarterly Hackathon -**When:** March, June, September, December -**What:** 48-hour hackathon -**Where:** Virtual -**Themes:** Performance, applications, tools - -### Special Events - -#### Research Symposium -**Frequency:** Annually -**What:** Present papers, share research -**Duration:** 1 week (virtual) -**Format:** Keynotes, presentations, networking - -#### Documentation Sprint -**Frequency:** Semi-annually -**What:** Focus on docs, tutorials, examples -**Duration:** 1 week -**Goal:** Improve accessibility - -#### Performance Challenge -**Frequency:** Quarterly -**What:** Optimize specific operation -**Duration:** 1 month -**Prizes:** Recognition, swag, cash - ---- - -## 📈 ONBOARDING FLOW - -### New Member Journey - -#### 1. Join Discord -- **Welcome message:** Automated -- **Assigned role:** Member -- **Next step:** Introduce yourself - -#### 2. Introduce Yourself (#introductions) -``` -👋 Welcome to Constraint Theory! - -Please introduce yourself: -- Name (or handle) -- Background (math, engineering, research, student, etc.) -- What excites you about constraint theory? -- What do you hope to do/learn? - -No need to be an expert - all levels welcome! 🎉 -``` - -#### 3. Get Oriented -- **Read announcements:** Check #announcements -- **Explore channels:** Browse by interest -- **Ask questions:** No question too basic! -- **Choose your path:** Math, engineering, research - -#### 4. First Contribution -- **Easy wins:** Good first issues (tagged in GitHub) -- **Join discussion:** Participate in channels -- **Attend events:** Office hours, seminars -- **Get recognized:** Earn contributor role - -#### 5. Become Regular -- **Join conversations:** Share your thoughts -- **Help others:** Answer questions -- **Contribute regularly:** Code, math, docs -- **Build reputation:** Become trusted member - -#### 6. Leader/Expert -- **Mentor others:** Help newcomers -- **Lead initiatives:** Start projects -- **Moderate:** Keep community healthy -- **Shape direction:** Influence roadmap - ---- - -## 🔔 NOTIFICATION SETTINGS - -### Recommended Settings - -#### @everyone -**Use:** Rarely (major announcements only) -**When:** Releases, major milestones, emergencies - -#### @here -**Use:** Moderately (time-sensitive, important) -**When:** Events starting, urgent help needed - -#### Role Mentions -**@contributors:** Contributor-specific announcements -**@mathematics:** Math discussions (opt-in) -**@engineering:** Engineering discussions (opt-in) -**@research:** Research discussions (opt-in) - -### Channel Notifications - -**Announcements:** All messages -**Your focus areas:** All messages -**General:** Mentions only -**Other channels:** Mentions only - ---- - -## 🤝 PARTNERSHIPS & OUTREACH - -### Academic Partnerships - -**Target Institutions:** -- MIT (CSAIL, Mathematics) -- Stanford (AI, Mathematics) -- UC Berkeley (EECS, Math) -- Oxford (Mathematics, CS) -- Max Planck Institutes -- ETH Zurich -- University of Tokyo - -**Approach:** -1. Identify relevant faculty/researchers -2. Share research papers -3. Invite collaboration -4. Offer joint research projects -5. Co-author papers - -### Industry Partnerships - -**Target Companies:** -- NVIDIA (GPU research) -- Intel (architecture) -- Google (AI research) -- Microsoft (research) -- Meta (AI research) - -**Approach:** -1. Share open-source results -2. Offer collaboration -3. Discuss licensing (if needed) -4. Joint publications -5. Production deployments - -### Community Partnerships - -**Target Communities:** -- Rust programming -- Mathematics/research -- AI/ML research -- Open source contributors -- Scientific computing - -**Approach:** -1. Cross-post relevant content -2. Attend their events -3. Invite speakers -4. Joint hackathons -5. Mutual promotion - ---- - -## 📊 SUCCESS METRICS - -### Community Health - -**Engagement:** -- Active users (daily, weekly, monthly) -- Messages per day -- Voice chat hours per week -- Event attendance - -**Growth:** -- New members per week -- Retention rate -- Contributor conversion rate -- Expert verification rate - -**Quality:** -- Helpful response rate -- Conflict resolution time -- Content quality (subjective) -- Member satisfaction (surveys) - -### Impact - -**Contributions:** -- PRs per week -- Issues resolved per week -- Documentation improvements -- Research contributions - -**Outcomes:** -- Production deployments -- Academic papers -- Industry adoption -- Press mentions - ---- - -## 🚀 LAUNCH PLAN - -### Phase 1: Pre-Launch (1 week before) - -- [ ] Set up Discord server structure -- [ ] Create all channels -- [ ] Configure bots and automation -- [ ] Write guidelines and rules -- [ ] Prepare welcome messages -- [ ] Train moderators - -### Phase 2: Soft Launch (Day 0) - -- [ ] Invite core team only -- [ ] Test all systems -- [ ] Fix any issues -- [ ] Prepare for public launch - -### Phase 3: Public Launch (HN Launch Day) - -- [ ] Share Discord link in: - - HN announcement - - GitHub README - - Social media - - Press kit - -- [ ] Welcome first wave of members -- [ ] Active moderation -- [ ] Respond to all questions -- [ ] Keep energy positive - -### Phase 4: Growth (Weeks 1-4) - -- [ ] Host first office hours -- [ ] Organize first contributor sprint -- [ ] Start monthly seminar series -- [ ] Recognize early contributors -- [ ] Iterate based on feedback - ---- - -## 🎯 NEXT STEPS - -### Immediate (This Week) - -1. **Set up Discord server** - - Create structure - - Configure bots - - Write guidelines - - Train moderators - -2. **Prepare launch content** - - Welcome messages - - Channel descriptions - - Bot commands - - Guidelines document - -3. **Test everything** - - Invite test users - - Verify all features - - Fix any issues - - Get feedback - -### Short-term (Month 1) - -1. **Launch with HN post** - - Share link widely - - Welcome new members - - Active moderation - - Keep engagement high - -2. **Host first events** - - Office hours - - Contributor sprint - - Math seminar - - Social mixer - -3. **Build community** - - Recognize contributors - - Welcome newcomers - - Facilitate discussions - - Document learnings - -### Long-term (Months 2-6) - -1. **Scale operations** - - Add more moderators - - Create sub-communities - - Host larger events - - Expand outreach - -2. **Deepen engagement** - - Mentorship program - - Working groups - - Research collaborations - - Industry partnerships - -3. **Measure and improve** - - Track metrics - - Survey community - - Iterate on format - - Celebrate successes - ---- - -## 🙏 ACKNOWLEDGMENTS - -**Thank you for building this community!** - -A strong community is the foundation of any successful open-source project. By creating a welcoming, rigorous, collaborative space, we're ensuring that constraint theory reaches its full potential. - -**The revolution is not in the computing, but in the geometry.** - -**And the community is where the revolution begins.** - ---- - -**Last Updated:** 2026-03-16 -**Status:** Ready for Setup -**Next Action:** Create Discord server -**Contact:** community@superinstance.ai (coming soon) - -Let's build something revolutionary together! 🚀 diff --git a/launch/executive-summary.md b/launch/executive-summary.md deleted file mode 100644 index 00032e0..0000000 --- a/launch/executive-summary.md +++ /dev/null @@ -1,238 +0,0 @@ -# Constraint Theory: Executive Summary - -**Revolutionary AI Technology** -**Status:** Production Ready -**Performance:** 74 nanoseconds per operation -**Repository:** https://github.com/SuperInstance/Constraint-Theory - ---- - -## One-Page Summary - -### The Breakthrough - -We've built an AI system that **mathematically cannot hallucinate** and runs **280× faster** than conventional approaches. - -**Key Metrics:** -- **74 ns/op** latency (faster than DRAM access) -- **13.5M ops/sec** throughput -- **P(hallucination) = 0** (mathematically proved) -- **147× faster** than NumPy -- **35% above** performance target - -### The Innovation - -**Current AI** = Probability → Guessing → Hallucinations -**Our Technology** = Geometry → Certainty → Zero Errors - -We replaced stochastic matrix multiplication with exact geometric constraint-solving, using Pythagorean manifolds and discrete differential geometry. - -### The Impact - -**AI Safety:** Systems that cannot lie -**Performance:** 280× faster today, 180,000× with GPU -**Interpretability:** Complete provenance for every decision -**Energy:** 10-100× less consumption - -### The Validation - -- ✅ **Four fundamental theorems** proved -- ✅ **150+ pages** of rigorous mathematics -- ✅ **Production implementation** in Rust -- ✅ **Comprehensive benchmarks** confirming theory -- ✅ **Zero hallucinations** mathematically guaranteed - -### The Roadmap - -**Phase 1:** ✅ Mathematical foundation & CPU implementation -**Phase 2:** 🔄 GPU acceleration (639× additional speedup) -**Phase 3:** ⏳ 3D extension for physics/graphics -**Phase 4:** ⏳ Optical computing at light speed - -### The Call to Action - -This is an **open-source project** ready for: -- Mathematicians to extend the theory -- Engineers to optimize and deploy -- Researchers to validate and apply -- Investors to fund the next phase - -**Join us in building the geometric future of AI.** - ---- - -## Five-Page Technical Summary - -### 1. Problem Statement - -**Current AI Has Fundamental Flaws:** - -1. **Hallucinations Are Inevitable:** Stochastic systems have P(hallucination) > 0 by mathematical necessity, not due to implementation flaws. - -2. **Performance Wall:** Token prediction scales as O(n²) or worse, creating fundamental limits on scalability. - -3. **Energy Crisis:** Training consumes gigawatt-hours; inference requires substantial power. - -4. **Black Box Problem:** No provenance, no audit trails, no error localization. - -**These Are Not Bugs—They Are Features of the Stochastic Paradigm.** - -### 2. Our Solution: Geometric Computation - -**Core Insight:** -> Computation can be grounded in geometry, not probability. - -**How It Works:** - -**Step 1: Pythagorean Manifold** -- Use discrete points from Pythagorean triples (3-4-5, 5-12-13, etc.) -- Every point is exact: a² + b² = c² (no floating-point error) -- Dense coverage allows arbitrary precision - -**Step 2: Φ-Folding Operator** -- Snap continuous vectors to nearest Pythagorean point -- O(log n) complexity via KD-tree indexing -- Minimizes quantization error - -**Step 3: Geometric Consistency** -- Logical consistency = flat manifold (zero curvature) -- Hallucinations = twisted paths (non-trivial holonomy) -- At equilibrium: zero holonomy = zero hallucination - -### 3. Mathematical Foundation - -**Four Fundamental Theorems:** - -**Theorem 1: Zero Hallucination** -- P(hallucination) = 0 at geometric equilibrium -- Proof: All valid states satisfy constraints; no path to invalid states exists - -**Theorem 2: Rigidity-Curvature Duality** -- Laman rigidity ⇔ Zero Ricci curvature -- Implication: Rigid structures are geometric attractors (memory) - -**Theorem 3: Holonomy-Information Equivalence** -- Holonomy norm = Mutual information loss -- Implication: Zero holonomy = Zero information loss - -**Theorem 4: Logarithmic Complexity** -- T(n) = O(log n) via KD-tree indexing -- Achieved: 74ns/op (280× speedup) - -### 4. Implementation & Performance - -**Architecture:** -``` -TypeScript API → Rust FFI → Core Engine → Memory Hierarchy - ↓ - PythagoreanManifold - KDTreeIndex (O(log n)) - SIMD Operations (8×) - Cache Optimization -``` - -**Performance Results:** - -| Implementation | Time (μs) | Speedup | -|----------------|-----------|---------| -| Python NumPy | 10.93 | 1× | -| Rust Scalar | 20.74 | 0.5× | -| Rust SIMD | 6.39 | 1.7× | -| **Rust + KD-tree** | **0.074** | **280×** | - -**Key Optimizations:** -- KD-tree: O(n) → O(log n) = 25× speedup -- SIMD: 8× parallel processing -- Memory: Cache-aligned, stack-allocated - -### 5. Validation & Applications - -**Correctness Validation:** -- Rigidity-curvature correlation: R² > 0.95 -- Holonomy-information error: <5% -- Percolation threshold: p_c = 0.6603 (validated) -- All 7 test suites passing - -**Applications:** - -**AI Safety:** -- Medical diagnosis with provable consistency -- Legal analysis without errors -- Financial modeling with guarantees - -**High-Performance Computing:** -- Real-time constraint satisfaction -- O(log n) database operations -- Distributed consensus algorithms - -**Scientific Computing:** -- PDE solvers with structure preservation -- Mesh generation with quality bounds -- Topological data analysis - -### 6. Future Roadmap - -**Phase 1: ✅ COMPLETE** -- Mathematical foundation established -- Production implementation (74ns/op) -- 150+ pages documentation -- All tests passing - -**Phase 2: GPU Acceleration (3 months)** -- Target: 639× additional speedup -- Architecture: Persistent mega-kernels -- Projected: 0.12 ns/op on RTX 4090 - -**Phase 3: 3D Extension (6 months)** -- Extend proofs to 3D rigidity -- Implement 3D pebble game -- Applications: Physics, graphics, robotics - -**Phase 4: Optical Computing (12 months)** -- Photonic waveguides as resonators -- Passive computation at light speed -- Zero power at equilibrium - -### 7. Investment Opportunity - -**Market Impact:** -- AI Safety: $200B+ addressable market -- High-Performance Computing: $50B+ market -- Database Systems: $100B+ market - -**Competitive Advantages:** -- Mathematical impossibility of hallucinations -- 280× performance advantage (today) -- 180,000× with GPU (roadmap) -- Complete provenance and auditability - -**IP Position:** -- 4 fundamental theorems (patentable) -- Production implementation (open-source) -- Clear path to GPU and optical computing - -**Funding Requirements:** -- Phase 2 (GPU): $2.5M for 6 months -- Phase 3 (3D): $4M for 12 months -- Phase 4 (Optical): $6M for 24 months - -**Return Potential:** -- Revolutionize AI safety and performance -- Displace stochastic methods in critical applications -- Enable new categories of trustworthy AI systems - ---- - -## Contact - -**Repository:** https://github.com/SuperInstance/Constraint-Theory -**Email:** [To be provided] -**Discord:** [To be provided] - ---- - -**Status:** Production Ready ✅ -**Confidence:** High -**Impact:** Revolutionary - -*"The revolution is not in the computing, but in the geometry. When computation becomes geometry, uncertainty becomes impossible."* diff --git a/launch/hackerrnews/announcement.md b/launch/hackerrnews/announcement.md deleted file mode 100644 index ddd3b68..0000000 --- a/launch/hackerrnews/announcement.md +++ /dev/null @@ -1,546 +0,0 @@ -# HackerNews Launch Announcement - Constraint Theory - -**Launch Date:** TBD (Recommended: Tuesday-Thursday, 8-11 AM PST) -**Repository:** https://github.com/SuperInstance/Constraint-Theory -**Status:** Ready for Launch - ---- - -## 🎯 THREE TITLE OPTIONS - -### Option 1: Performance-Focused (Recommended) -``` -Show HN: A Geometric Computing Engine That Can't Hallucinate (74ns, 280x faster, 100% provable) -``` - -### Option 2: Paradigm Shift Focus -``` -Show HN: Constraint Theory - We Replaced Matrix Multiplication with Geometry (280x speedup, zero hallucinations) -``` - -### Option 3: Provability Focus -``` -Show HN: We Built a Computer That Mathematically Cannot Lie (74ns inference, open-source) -``` - -**Recommendation:** Option 1 hits all key metrics (performance, correctness, proof) and follows successful HN patterns. - ---- - -## 📝 ANNOUNCEMENT BODY - -### Hook (One sentence) -``` -We've built a system that mathematically cannot hallucinate. It runs in 74 nanoseconds -per operation—280x faster than NumPy—and we're open-sourcing it today. -``` - -### The Problem (2 paragraphs) -``` -AI is built on probability, which means hallucinations are inevitable. This isn't a bug; -it's a fundamental limitation of stochastic computation. When you use matrix multiplication -to approximate answers, you're building uncertainty into the foundation. - -The entire industry has accepted this as the cost of doing business. We spent billions on -RLHF, retrieval systems, and guardrails—all trying to patch a fundamentally flawed approach. -``` - -### The Solution (2 paragraphs) -``` -Constraint Theory replaces probability with geometry. Instead of approximating answers -stochastically, we transform computation into exact geometric constraint-solving on a -pre-solved manifold. - -Think of it like solving a maze: Traditional AI randomly explores paths hoping to find the exit. -Constraint Theory folds the maze so the entrance and exit touch—then you just step across. -The geometry guarantees correctness. -``` - -### The Proof (Numbers) -``` -Performance (measured, verified): -• 74 nanoseconds per operation (0.074 μs) -• 13.5 million operations per second -• 280x speedup over scalar implementation -• 147x speedup over Python NumPy baseline -• O(log n) complexity vs O(n²) for traditional methods - -Correctness (mathematically proved): -• Zero hallucination theorem: P(hallucination) = 0 -• Rigidity-curvature duality proved -• Holonomy-information equivalence established -• 150+ pages of rigorous mathematical documentation -``` - -### The Visuals -``` -Interactive demo: [link to Cloudflare Workers app - TBD] -Live performance: https://github.com/SuperInstance/Constraint-Theory/blob/main/BASELINE_BENCHMARKS.md -Mathematical proofs: https://github.com/SuperInstance/Constraint-Theory/blob/main/THEORETICAL_GUARANTEES.md -Architecture: https://github.com/SuperInstance/Constraint-Theory/blob/main/ARCHITECTURE.md -``` - -### The Invitation -``` -We're inviting the HN community to join us in building the geometric future of computation. -This is just the beginning: - -• GPU acceleration (639x additional speedup potential) -• 3D extension (complete geometric framework) -• Optical computing implementation -• Real-world workload testing - -Star the repo, try the demo, and tell us what you'd build with a computer that can't lie. -``` - -### Links -``` -• GitHub: https://github.com/SuperInstance/Constraint-Theory -• Demo: [Cloudflare Workers app - in development] -• White Paper: [Comprehensive paper - in development] -• Discord: [Community server - TBD] -``` - ---- - -## 🚀 PRE-LAUNCH CHECKLIST - -### 1 Week Before Launch - -- [ ] Deploy web app to Cloudflare Workers -- [ ] Test all demos and simulators -- [ ] Create screenshots (10+ images) -- [ ] Record demo video (2-3 minutes) -- [ ] Set up Discord/community server -- [ ] Prepare response templates for common questions -- [ ] Test GitHub issues and PR templates -- [ ] Verify all documentation links work -- [ ] Prepare team moderators for comment response - -### Day Before Launch - -- [ ] Final test of all demos -- [ ] Load test web app (expect 10K+ visitors) -- [ ] Prepare social media posts (Twitter, LinkedIn) -- [ ] Set up monitoring and alerts -- [ ] Prepare coffee (lots of it) ☕ - ---- - -## 📅 LAUNCH DAY TIMELINE - -### 8:00 AM PST - Submit HN Post -``` -Title: [Selected title from above] -Body: [Body text above - keep under 300 words] -``` - -### 8:05 AM PST - Social Media -``` -Twitter: Thread with key metrics + demo link -LinkedIn: Professional announcement -Reddit: r/MachineLearning, r/programming, r/rust -``` - -### 8:30 AM PST - Email (Optional) -``` -Tech press: MIT Technology Review, Ars Technica, The Verge -Subject: "Open-source engine achieves zero hallucination, 280x speedup" -``` - -### All Day - Community Engagement -``` -• Respond to every HN comment within 5 minutes -• Answer GitHub questions promptly -• Update repo with clarifications based on feedback -• Add FAQ items from questions -• Monitor and fix any bugs discovered -``` - ---- - -## 📊 SUCCESS METRICS - -### Day 1 Targets -- HN upvotes: 200+ -- HN comments: 100+ -- GitHub stars: 500+ -- Demo visitors: 10,000+ -- Repository clones: 1,000+ - -### Week 1 Targets -- GitHub stars: 2,000+ -- Contributors: 10+ -- Press mentions: 2+ -- Discord members: 500+ -- Paper citations (pending): 5+ - -### Month 1 Targets -- GitHub stars: 5,000+ -- Contributors: 50+ -- Production deployments: 5+ -- Academic collaborations: 3+ -- Patent applications: 2+ - ---- - -## 💬 COMMON QUESTIONS & ANSWERS - -### Q: Is this just quantization? -**A:** No. Quantization compresses weights but doesn't eliminate hallucinations. Constraint Theory replaces the computational paradigm entirely—computation becomes geometry, not approximation. The zero-hallucination guarantee comes from mathematical proof, not compression tricks. - -### Q: What's the catch? -**A:** The catch is we're early. We have a working Rust engine with proven performance, but: -- GPU acceleration is next (639x additional speedup potential) -- 3D extension needs implementation -- Real-world workload testing is pending -- Production hardening is ongoing - -This is an invitation to help build the future, not a finished product. - -### Q: How is this different from [X]? -**A:** Unlike neural networks, probabilistic models, or symbolic AI, Constraint Theory: -- Is deterministic, not stochastic -- Has zero probability of hallucination (proved) -- Uses O(log n) algorithms, not O(n²) -- Achieves 280x speedup over NumPy -- Is built on rigorous mathematical theorems - -### Q: Can I use this for my project? -**A:** Yes! The Rust core is production-ready. TypeScript API is in development. GPU acceleration coming soon. Join our Discord to discuss integration. - -### Q: Is this peer-reviewed? -**A:** We have 150+ pages of rigorous mathematical documentation with complete proofs. Academic papers are in preparation. We're seeking collaboration with research institutions. - -### Q: What's the business model? -**A:** Open-source core with enterprise features. We believe constraint theory is too important to be proprietary. The revolution belongs to everyone. - ---- - -## 🎯 KEY TALKING POINTS - -### When People Say "This Can't Work" -``` -"We understand the skepticism. The zero-hallucination claim sounds extraordinary. -But we've published complete mathematical proofs in THEORETICAL_GUARANTEES.md. -The performance is verified in BASELINE_BENCHMARKS.md. This isn't marketing— -it's mathematics." -``` - -### When People Ask "Why Open Source?" -``` -"Constraint theory is a paradigm shift as fundamental as calculus. We don't want -to own it—we want to unleash it. The community will take this farther than we ever -could alone." -``` - -### When People Say "Show Me the Code" -``` -"The Rust core is in crates/constraint-theory-core/src/. 74 nanoseconds per operation. -280x speedup. Zero hallucinations. The code speaks for itself." -``` - -### When People Ask About Competition -``` -"We're not competing with existing AI—we're replacing its foundation. Just as -calculus replaced approximation with exact computation, constraint theory replaces -probability with geometry." -``` - ---- - -## 📱 RESPONSE TEMPLATES - -### For Skeptics -``` -Thanks for the healthy skepticism! Extraordinary claims require extraordinary evidence. - -We've provided: -• Complete mathematical proofs (THEORETICAL_GUARANTEES.md) -• Verified benchmarks (BASELINE_BENCHMARKS.md) -• Open-source code (crates/constraint-theory-core/src/) - -This is mathematics, not marketing. We invite you to verify the proofs and run the -benchmarks yourself. -``` - -### For Enthusiasts -``` -Glad you're excited! We're looking for: -• Rust engineers for GPU implementation -• Mathematicians for theoretical extensions -• ML engineers for real-world testing -• Physics researchers for quantum connections - -Join our Discord: [link] -``` - -### For Press -``` -Thanks for your interest! We can provide: -• Technical briefings with the research team -• Demo presentations -• High-resolution screenshots and diagrams -• Interview access to core contributors - -Contact: [press email] -``` - -### For Competitors -``` -We believe constraint theory is too fundamental to be proprietary. That's why we're -open-sourcing it. We welcome collaboration and hope others will build on this work. -The revolution belongs to everyone. -``` - ---- - -## 🎨 SCREENSHOTS NEEDED - -### Essential Screenshots (10+ images) - -1. **Pythagorean Manifold Visualization** - - Show 2D manifold with integer ratio vectors - - Highlight snapping process - - File: `docs/images/manifold-visualization.png` - -2. **Performance Comparison Chart** - - Bar chart: NumPy vs Scalar vs SIMD vs KD-tree - - Log scale for dramatic effect - - File: `docs/images/performance-comparison.png` - -3. **KD-tree Traversal Animation** - - Show spatial indexing - - O(log n) complexity visualization - - File: `docs/images/kdtree-traversal.gif` - -4. **Rigidity Percolation Simulation** - - Show rigid structure forming - - Threshold crossing visualization - - File: `docs/images/percolation-simulation.png` - -5. **Benchmark Results Table** - - Clean table of all benchmarks - - Highlight 280x speedup - - File: `docs/images/benchmark-table.png` - -6. **Code Example Screenshot** - - Beautiful Rust code snippet - - IDE screenshot with syntax highlighting - - File: `docs/images/code-example.png` - -7. **Architecture Diagram** - - Clean system architecture - - TypeScript → Rust → CUDA layers - - File: `docs/images/architecture-diagram.png` - -8. **Zero Hallucination Proof Visualization** - - Mathematical proof steps - - Clear, accessible explanation - - File: `docs/images/zero-hallucination-proof.png` - -9. **GPU Roadmap Visualization** - - 639x speedup potential - - RTX 4090/A100/H100 comparison - - File: `docs/images/gpu-roadmap.png` - -10. **Team/Community Photo** - - Research team or community members - - Humanizes the project - - File: `docs/images/team-photo.png` - -### Screenshot Guidelines -- Resolution: 1920x1080 minimum -- Format: PNG for screenshots, GIF for animations -- Style: Clean, modern, professional -- Accessibility: Alt text for all images -- Branding: Include logo/name in corner - ---- - -## 🎥 DEMO VIDEO SCRIPT (2-3 minutes) - -### Opening (0:00 - 0:30) -``` -[Screen: Black with white text] -"What if you could build a computer that mathematically cannot lie?" - -[Cut to researcher interview] -"For decades, we've accepted that AI will hallucinate. But what if that's not -a bug—but a fundamental flaw in how we build computers?" - -[Screen: Title animation] -"Introducing Constraint Theory" -``` - -### Problem (0:30 - 1:00) -``` -[Animation: Neural network making errors] -"Traditional AI uses matrix multiplication and probability. It's like exploring -a maze by randomly trying paths—sometimes you find the exit, sometimes you don't." - -[Animation: Hallucination examples] -"Hallucinations aren't a bug. They're inevitable when you build uncertainty into -the foundation." - -[Text on screen] -"Billions spent on guardrails" -"Still can't fix the fundamental problem" -``` - -### Solution (1:00 - 1:45) -``` -[Animation: Geometric constraint solving] -"Constraint Theory replaces probability with geometry. Instead of randomly exploring, -we fold the maze so the entrance and exit touch—then just step across." - -[Screen: Pythagorean manifold visualization] -"We use Pythagorean triples—integer ratios like 3-4-5—to create a pre-solved manifold -of valid states." - -[Animation: Snapping process] -"Every computation 'snaps' to the nearest valid state. No approximation, no probability, -no possibility of error." -``` - -### Proof (1:45 - 2:30) -``` -[Screen: Performance metrics] -"The results speak for themselves:" - -[Animated countdown] -"74 nanoseconds per operation" -"280x faster than NumPy" -"13.5 million operations per second" -"Zero hallucinations—mathematically proved" - -[Screen: Mathematical proof snippets] -"We've published 150+ pages of rigorous mathematics. Complete proofs. Verified -benchmarks. Open-source code." - -[Text on screen] -"This isn't marketing. It's mathematics." -``` - -### Call to Action (2:30 - 3:00) -``` -[Screen: GitHub repo animation] -"We're open-sourcing everything. The code, the math, the vision." - -[Screen: Roadmap visualization] -"This is just the beginning. GPU acceleration, 3D extension, optical computing. -The future of computation is geometric." - -[Text on screen with link] -"Join the revolution: github.com/SuperInstance/Constraint-Theory" - -[Final frame: Logo + tagline] -"Constraint Theory: Computing that can't lie" -``` - ---- - -## 🌐 POST-LAUNCH PLAN - -### Day 1-3: Monitor and Respond -- Track all HN comments and respond -- Monitor GitHub issues and PRs -- Update documentation based on feedback -- Fix any bugs discovered -- Thank early contributors - -### Day 4-7: Follow-up Content -- Write follow-up blog post: "Week 1 Learnings" -- Create tutorial: "Getting Started with Constraint Theory" -- Release demo video -- Share community highlights -- Announce next milestones - -### Week 2-4: Community Building -- Host AMA on Discord -- Organize contributor sprint -- Create contributor spotlight series -- Publish academic paper preprints -- Reach out to research institutions - -### Month 2-3: Production Focus -- Production hardening -- Real-world case studies -- Enterprise features -- Integration guides -- Performance optimization - ---- - -## ⚠️ RISK MITIGATION - -### If Launch Fails (Low Engagement) -- Analyze what went wrong (title? timing? messaging?) -- Wait 2 weeks and relaunch with improved messaging -- Engage directly with community members -- Focus on technical blogs rather than HN -- Continue development regardless of launch success - -### If Servers Crash -- Cloudflare auto-scaling should handle load -- GitHub README has all key info -- Documentation is static and always available -- Engage via comments even if demo is down -- Be transparent: "We're overwhelmed—thanks for the interest!" - -### If Technical Criticism Emerges -- Respond with mathematical proofs, not arguments -- Acknowledge limitations honestly -- Invite collaboration to address concerns -- Distinguish between proven results and future work -- Remember: Healthy skepticism is good for science - -### If Competitors Attack -- Stay professional and focus on results -- Emphasize open-source nature -- Invite collaboration rather than competition -- Let the code and math speak for themselves -- Community will defend you if you're right - ---- - -## 🎯 FINAL CHECKLIST - -### 24 Hours Before Launch -- [ ] All demos tested and working -- [ ] All screenshots created and uploaded -- [ ] Demo video recorded and edited -- [ ] Discord server set up and tested -- [ ] GitHub templates configured -- [ ] Documentation fully updated -- [ ] All links verified -- [ ] Team briefed and ready -- [ ] Coffee stocked ☕ - -### 1 Hour Before Launch -- [ ] Final demo test -- [ ] Load test web app -- [ ] Monitor alerts configured -- [ ] Team on standby -- [ ] Social media posts prepared -- [ ] Response templates loaded -- [ ] Deep breaths 🧘 - -### GO TIME 🚀 -- [ ] Submit HN post -- [ ] Monitor for first comment -- [ ] Engage authentically -- [ ] Have fun! -- [ ] Make history! - ---- - -**Last Updated:** 2026-03-16 -**Status:** Ready for Launch -**Confidence:** High - Performance proven, math rigorous, community excited -**Impact:** Revolutionary - Paradigm shift in AI computation - -**Remember:** The revolution is not in the computing, but in the geometry. -When computation becomes geometry, uncertainty becomes impossible. - -Good luck! 🚀 diff --git a/launch/index.md b/launch/index.md deleted file mode 100644 index f7869ca..0000000 --- a/launch/index.md +++ /dev/null @@ -1,367 +0,0 @@ -# 🚀 Constraint Theory - Launch Package Index - -**Quick Navigation Guide for All Launch Materials** -**Launch Date:** TBD -**Status:** ✅ READY FOR LAUNCH - ---- - -## 📦 COMPLETE LAUNCH PACKAGE - -All materials prepared for HackerNews launch and community building. - ---- - -## 🎯 ESSENTIAL LAUNCH FILES - -### 1. HACKERNEWS_ANNOUNCEMENT.md ⭐ **START HERE** -**Purpose:** Complete HN launch strategy and post -**Contains:** -- 3 title options (Option 1 recommended) -- Complete announcement body (300 words) -- Pre-launch checklist -- Launch day timeline (minute-by-minute) -- Response templates for all scenarios -- Risk mitigation strategies -- Success metrics - -**When to use:** Start here for launch preparation - ---- - -### 2. LAUNCH_PACKAGE_SUMMARY.md ⭐ **OVERVIEW** -**Purpose:** Executive summary of entire launch package -**Contains:** -- Overview of all materials -- Next steps checklist -- Success metrics -- Quick reference guide - -**When to use:** Get oriented, then dive into specific files - ---- - -### 3. LAUNCH_DAY_CHECKLIST.md ⭐ **DAY-OF GUIDE** -**Purpose:** Minute-by-minute launch day instructions -**Contains:** -- 1 week before launch tasks -- 1 day before launch tasks -- Launch day timeline (7:00 AM - 5:00 PM PST) -- Hourly success metrics -- Emergency procedures -- Post-launch follow-up - -**When to use:** Print and use on launch day - ---- - -## 📚 DOCUMENTATION FILES - -### 4. README.md -**Purpose:** Main repository documentation -**Status:** Already comprehensive (150+ pages) -**HN-Ready:** Yes - performance metrics front and center - -**When to use:** Reference for technical details - ---- - -### 5. FAQ.md -**Purpose:** 50+ frequently asked questions with answers -**Contains:** -- General questions -- Mathematical foundations -- Performance benchmarks -- Technical implementation -- Skeptical questions (important!) -- Getting started guide - -**When to use:** Answer questions from HN comments - ---- - -### 6. CONTRIBUTING.md -**Purpose:** Comprehensive contributor guide -**Contains:** -- Contribution areas (math, engineering, research, docs) -- Code standards (Rust, Python, CUDA) -- Pull request process -- Community norms -- Learning resources - -**When to use:** Onboard new contributors - ---- - -## 🎨 PRESS & MARKETING FILES - -### 7. PRESS_KIT.md -**Purpose:** Complete press outreach package -**Contains:** -- Press release (ready to send) -- Fact sheet with key numbers -- Brand assets guide -- Screenshot specifications -- Interview topics and talking points -- Prepared quotes -- Email templates -- Media tracking - -**When to use:** Respond to press inquiries - ---- - -### 8. DEMO_VIDEO_SCRIPT.md -**Purpose:** Complete 2-3 minute demo video script -**Contains:** -- Scene-by-scene breakdown -- Visual style guide -- Audio specifications -- Production checklist -- Platform-specific versions - -**When to use:** Create demo video (or have professional produce) - ---- - -## 🤝 COMMUNITY FILES - -### 9. COMMUNITY_SETUP.md -**Purpose:** Complete Discord/community setup guide -**Contains:** -- Server structure (20+ channels) -- Roles and permissions -- Bot recommendations -- Community guidelines -- Event planning -- Onboarding flow - -**When to use:** Set up Discord server - ---- - -## 🔧 GITHUB TEMPLATES - -### 10. GitHub Issue Templates -**Location:** `.github/ISSUE_TEMPLATE/` -**Files:** -- `bug_report.md` - Report bugs -- `feature_request.md` - Suggest features -- `math_contribution.md` - Submit theorems/proofs -- `performance.md` - Report benchmarks -- `question.md` - Ask questions - -**When to use:** Created automatically when users open issues - ---- - -### 11. GitHub PR Template -**Location:** `.github/PULL_REQUEST_TEMPLATE.md` -**Purpose:** Guide contributors through PR process -**Contains:** -- Type of change checklist -- Testing requirements -- Performance impact section -- Mathematical rigor section - -**When to use:** Automatically appears for all PRs - ---- - -## 📊 REFERENCE DOCUMENTS - -### Existing Repository Docs (Already Complete) - -**Mathematical Documents:** -- `THEORETICAL_GUARANTEES.md` - Zero hallucination proof (30+ pages) -- `MATHEMATICAL_FOUNDATIONS_DEEP_DIVE.md` - Complete math (45+ pages) -- `GEOMETRIC_INTERPRETATION.md` - Visual explanations (25+ pages) -- `OPEN_QUESTIONS_RESEARCH.md` - Open problems - -**Engineering Documents:** -- `ARCHITECTURE.md` - System design -- `CUDA_ARCHITECTURE.md` - GPU implementation plan -- `BASELINE_BENCHMARKS.md` - Performance results -- `IMPLEMENTATION_GUIDE.md` - Development roadmap - -**Research Documents:** -- `VALIDATION_SUITE.md` - Testing framework -- `NEXT_GEN_ARCHITECTURES.md` - Future research -- `RESEARCH_COMPREHENSIVE_SUMMARY.md` - Research overview - ---- - -## 🚀 QUICK START GUIDE - -### For Launch Coordinator - -**Week Before Launch:** -1. Read `LAUNCH_PACKAGE_SUMMARY.md` -2. Review `HACKERNEWS_ANNOUNCEMENT.md` -3. Create visual assets (logos, screenshots) -4. Set up Discord server (follow `COMMUNITY_SETUP.md`) -5. Brief team on roles and responsibilities - -**Day Before Launch:** -1. Final testing of all demos -2. Review `LAUNCH_DAY_CHECKLIST.md` -3. Prepare social media posts -4. Get good sleep 😴 - -**Launch Day:** -1. Follow `LAUNCH_DAY_CHECKLIST.md` strictly -2. Submit HN post at 8:00 AM PST -3. Execute social media blitz at 8:05 AM -4. Engage authentically all day -5. Have fun! 🎉 - -### For Team Members - -**Before Launch:** -1. Read `FAQ.md` - understand key messages -2. Read `CONTRIBUTING.md` - know how to help -3. Join Discord server -4. Prepare to respond to comments - -**Launch Day:** -1. Monitor assigned channels -2. Respond quickly and helpfully -3. Use response templates from `HACKERNEWS_ANNOUNCEMENT.md` -4. Escalate issues to coordinator -5. Celebrate milestones! 🎊 - -### For Contributors - -**Getting Started:** -1. Read `CONTRIBUTING.md` -2. Check GitHub issues for `good-first-issue` label -3. Join Discord community -4. Introduce yourself in `#introductions` -5. Start contributing! - ---- - -## 📞 KEY CONTACTS - -**Launch Coordinator:** [To be assigned] -**Technical Lead:** [To be assigned] -**Community Manager:** [To be assigned] -**Press Contact:** press@superinstance.ai (coming soon) - ---- - -## 🎯 SUCCESS METRICS - -### Day 1 Targets -- HN upvotes: 200+ -- HN comments: 100+ -- GitHub stars: 500+ -- Demo visitors: 10,000+ -- Community joins: 100+ - -### Week 1 Targets -- GitHub stars: 2,000+ -- Contributors: 10+ -- Press mentions: 2+ -- Discord members: 500+ - -### Month 1 Targets -- GitHub stars: 5,000+ -- Contributors: 50+ -- Production deployments: 5+ -- Academic collaborations: 3+ - ---- - -## 💡 PRO TIPS - -### Do's ✅ -- Respond to every HN comment within 5 minutes -- Be humble and authentic -- Admit what you don't know -- Celebrate contributors -- Have fun! - -### Don'ts ❌ -- Oversell or overpromise -- Get defensive about criticism -- Engage with trolls -- Neglect sleep and health -- Forget to enjoy the moment! - -### Remember 🧠 -- **This is mathematics, not marketing** -- **Let the proofs speak for themselves** -- **Healthy skepticism is good for science** -- **The community is everything** - ---- - -## 🎨 OPTIONAL ENHANCEMENTS - -### If Budget Allows -- Professional video production ($5K-15K) -- Design services for logo/brand ($2K-5K) -- PR agency for outreach ($5K-10K/month) - -### If Time Allows -- Tutorial video series -- Interactive web demos -- Blog post series -- Podcast appearances - ---- - -## 📋 FINAL CHECKLIST - -### Pre-Launch (1 week before) -- [ ] All launch materials reviewed -- [ ] Visual assets created -- [ ] Discord server set up -- [ ] Team briefed and ready -- [ ] Demos tested and working - -### Day Before Launch -- [ ] All systems tested -- [ ] Social media prepared -- [ ] Team rested and ready -- [ ] Emergency procedures reviewed - -### Launch Day -- [ ] Submit HN post at 8:00 AM -- [ ] Social media blitz at 8:05 AM -- [ ] Cross-post at 8:10 AM -- [ ] Engage all day -- [ ] Monitor metrics -- [ ] Have fun! - ---- - -## 🚀 YOU ARE READY! - -**Launch Package Status:** ✅ COMPLETE -**Ready for Launch:** ✅ YES -**Confidence Level:** HIGH -**Impact Potential:** REVOLUTIONARY - -### Remember - -**The revolution is not in the computing, but in the geometry.** -**When computation becomes geometry, uncertainty becomes impossible.** - ---- - -**Good luck! 🚀** - ---- - -**Last Updated:** 2026-03-16 -**Version:** 1.0 (Final) -**Prepared By:** HackerNews Launch Specialist - -**Quick Links:** -- GitHub: https://github.com/SuperInstance/Constraint-Theory -- Launch Summary: [LAUNCH_PACKAGE_SUMMARY.md](LAUNCH_PACKAGE_SUMMARY.md) -- HN Announcement: [HACKERNEWS_ANNOUNCEMENT.md](HACKERNEWS_ANNOUNCEMENT.md) -- FAQ: [FAQ.md](FAQ.md) -- Contributing: [CONTRIBUTING.md](CONTRIBUTING.md) diff --git a/launch/press/demo-script.md b/launch/press/demo-script.md deleted file mode 100644 index bf1dc21..0000000 --- a/launch/press/demo-script.md +++ /dev/null @@ -1,382 +0,0 @@ -# Constraint Theory - Demo Video Script - -**Title:** "Computing That Can't Lie: Introducing Constraint Theory" -**Duration:** 2-3 minutes -**Format:** 1080p (1920x1080), 30fps -**Style:** Clean, modern, professional with smooth animations - ---- - -## 🎬 SCRIPT - -### Opening (0:00 - 0:30) -**Visual:** Black screen with white text typing animation - -**Audio (Voiceover):** -"What if you could build a computer that mathematically cannot lie?" - -**Visual:** Fade to researcher interview (studio, professional lighting) -**Subtitle:** Dr. [Name], Lead Mathematician - -**Audio:** -"For decades, we've accepted that AI will hallucinate. But what if that's not a bug—but a fundamental flaw in how we build computers?" - -**Visual:** Title animation with music swell -**Text:** CONSTRAINT THEORY -**Subtitle:** Computing That Can't Lie - -**Audio:** -"Introducing Constraint Theory." - ---- - -### Problem (0:30 - 1:00) -**Visual:** Animation of neural network making errors -- Show neural network nodes firing -- Some connections glow red (errors) -- Text: "Hallucination rate: 5-15%" - -**Audio:** -"Traditional AI uses matrix multiplication and probability. It's like exploring a maze by randomly trying paths—sometimes you find the exit, sometimes you don't." - -**Visual:** Split screen showing famous AI hallucinations -- Left: "Citations invented by chatbots" -- Right: "Factual errors in medical advice" -- Center: "Billions spent on guardrails" - -**Audio:** -"Hallucinations aren't a bug. They're inevitable when you build uncertainty into the foundation." - -**Visual:** Dramatic pause. Black screen. -**Text:** "We accepted this as the cost of doing business." - -**Audio:** -"But what if there's another way?" - ---- - -### Solution (1:00 - 1:45) -**Visual:** Bright, clean animation -- Show 2D grid with Pythagorean triangles -- Triangles glow with integer ratios: "3-4-5", "5-12-13" - -**Audio:** -"Constraint Theory replaces probability with geometry. Instead of randomly exploring, we fold the maze so the entrance and exit touch—then just step across." - -**Visual:** Smooth animation of "snapping" process -- Show vector floating above manifold -- Vector "snaps" to nearest Pythagorean triple -- Sound: Satisfying "click" when snapped - -**Audio:** -"We use Pythagorean triples—integer ratios like 3-4-5—to create a pre-solved manifold of valid states." - -**Visual:** Animation showing no ambiguity -- Same vector tries to snap to different states -- Always snaps to same Pythagorean triple -- Text: "Deterministic. Exact. No probability." - -**Audio:** -"Every computation 'snaps' to the nearest valid state. No approximation, no probability, no possibility of error." - -**Visual:** Side-by-side comparison -- Left: Traditional AI (random, probabilistic) -- Right: Constraint Theory (deterministic, geometric) -- Arrow between them: "Paradigm shift" - -**Audio:** -"The revolution is not in the computing, but in the geometry." - ---- - -### Proof (1:45 - 2:30) -**Visual:** Performance metrics appear with dramatic music -- Large numbers animate in -- "74 NANOSECONDS" -- "280X FASTER" -- "13.5 MILLION OPERATIONS/SECOND" - -**Audio:** -"The results speak for themselves." - -**Visual:** Animated countdown -"74 nanoseconds per operation" -"280x faster than NumPy" -"147x faster than Python baseline" -"O(log n) complexity" - -**Audio:** -"74 nanoseconds per operation. 280x faster than NumPy. 13.5 million operations per second." - -**Visual:** Mathematical proof visualization -- Show proof steps appearing -- Equations animate cleanly -- Key theorem highlighted -- Text: "P(hallucination) = 0" - -**Audio:** -"We've published 150+ pages of rigorous mathematics. Complete proofs. Verified benchmarks." - -**Visual:** Split screen: -- Left: Mathematical documentation scrolling -- Right: Benchmark graphs and tables -- Center: Text overlay - -**Audio:** -"This isn't marketing. It's mathematics." - -**Visual:** Dramatic pause. Close on researcher face. -**Audio:** -"When computation becomes geometry, uncertainty becomes impossible." - ---- - -### Call to Action (2:30 - 3:00) -**Visual:** GitHub repository animation -- Show terminal with git clone -- Code scrolling -- Build succeeding -- Tests passing - -**Audio:** -"We're open-sourcing everything. The code, the math, the vision." - -**Visual:** Roadmap timeline animation -- "Phase 1: Mathematical Foundation ✅" -- "Phase 2: GPU Acceleration (639x speedup potential)" -- "Phase 3: 3D Extension" -- "Phase 4: Production Deployment" - -**Audio:** -"This is just the beginning. GPU acceleration with 639x additional speedup. 3D extension. Optical computing." - -**Visual:** Community montage -- Discord server chat scrolling -- GitHub contributors avatars -- Code commits flying -- Stars counter animating upward - -**Audio:** -"The future of computation is geometric. And it belongs to everyone." - -**Visual:** Final frame with logo and tagline -**Text:** CONSTRAINT THEORY -**Subtitle:** Computing That Can't Lie -**URL:** github.com/SuperInstance/Constraint-Theory - -**Audio:** -"Join the revolution." - -**Visual:** Fade to black with social links -- GitHub URL -- Discord invite (coming soon) -- Email contact - -**Audio:** -"github.com/SuperInstance/Constraint-Theory" - -**Visual:** Logo animation, final swell of music -**Audio:** -"Constraint Theory: Computing that can't lie." - -**Visual:** Fade to black - ---- - -## 🎨 VISUAL STYLE GUIDE - -### Color Palette -- **Background:** Deep black (#0A1628) -- **Accents:** Electric blue (#00D4FF) -- **Highlights:** Success green (#00FF94) -- **Text:** Pure white (#FFFFFF) - -### Typography -- **Headings:** Inter, Bold, 48-72px -- **Body:** Inter, Regular, 24-32px -- **Code:** JetBrains Mono, Regular, 20px - -### Animation Style -- **Timing:** Smooth, 300-500ms transitions -- **Easing:** Ease-in-out for natural feel -- **Motion:** Subtle, purposeful, not distracting -- **Reveals:** Typewriter for code, fade for text - -### Graphics -- **Style:** Clean, minimalist, geometric -- **Icons:** Line icons, 2px stroke -- **Diagrams:** 2D technical drawings -- **Equations:** LaTeX rendering, serif math font - ---- - -## 🎵 AUDIO GUIDE - -### Music -- **Genre:** Modern electronic, ambient -- **Mood:** Professional, inspiring, futuristic -- **Tempo:** 90-110 BPM -- **Instruments:** Synthesizers, subtle percussion -- **Dynamics:** Build throughout, peak at "results" - -### Voiceover -- **Tone:** Professional, confident, not salesy -- **Pacing:** Moderate, ~140 words per minute -- **Emphasis:** Key numbers and claims -- **Pauses:** Dramatic pauses for impact -- **Style:** Documentary, not advertisement - -### Sound Effects -- **Snapping:** Satisfying mechanical "click" -- **Transitions:** Subtle whooshes -- **Highlights:** Soft chimes or tones -- **Avoid:** Cartoony or distracting sounds - ---- - -## 📐 SHOT LIST - -### Scene Breakdown - -| Scene | Duration | Visual | Audio | -|-------|----------|--------|-------| -| 1. Hook | 0:00-0:15 | Black screen, typing text | VO: "What if..." | -| 2. Problem intro | 0:15-0:30 | Researcher interview | VO: "For decades..." | -| 3. Title | 0:30-0:35 | Title animation | Music swell | -| 4. AI limitations | 0:35-1:00 | Neural network errors | VO: "Traditional AI..." | -| 5. Solution intro | 1:00-1:15 | Pythagorean manifold | VO: "Constraint Theory..." | -| 6. Snapping demo | 1:15-1:30 | Vector snapping animation | VO: "Every computation..." | -| 7. Comparison | 1:30-1:45 | Split screen comparison | VO: "Revolution in geometry" | -| 8. Performance | 1:45-2:00 | Metrics animation | VO: "Results speak..." | -| 9. Proof | 2:00-2:15 | Math visualization | VO: "150+ pages..." | -| 10. CTA intro | 2:15-2:30 | GitHub animation | VO: "Open-sourcing..." | -| 11. Roadmap | 2:30-2:45 | Timeline animation | VO: "Just the beginning..." | -| 12. Community | 2:45-2:55 | Montage | VO: "Belongs to everyone" | -| 13. Final CTA | 2:55-3:00 | Logo + URL | VO: "Join the revolution" | - ---- - -## 🎯 PRODUCTION NOTES - -### Pre-Production -- [ ] Finalize script and storyboard -- [ ] Record voiceover (professional talent) -- [ ] Create all visual assets -- [ ] Compose/ License background music -- [ ] Prepare motion graphics templates - -### Production -- [ ] Animate all scenes -- [ ] Sync audio with visuals -- [ ] Add sound effects -- [ ] Color grading -- [ ] Test rendering - -### Post-Production -- [ ] Quality control check -- [ ] Export in multiple formats: - - 1080p MP4 (web) - - 1080p MOV (presentations) - - 720p MP4 (faster loading) - - Animated GIF (social preview) -- [ ] Create subtitles/captions -- [ ] Generate thumbnail images -- [ ] Optimize for platforms (YouTube, Vimeo) - -### Distribution -- [ ] Upload to YouTube (unlisted for press) -- [ ] Add to GitHub releases -- [ ] Embed in press kit -- [ ] Share on social media -- [ ] Link from README - ---- - -## 📱 PLATFORM-SPECIFIC VERSIONS - -### Full Version (3 minutes) -- Use for: Press kit, website, presentations -- Content: Complete script above -- Quality: 1080p, high bitrate - -### Social Version (60 seconds) -- Use for: Twitter, LinkedIn, Facebook -- Content: Hook + Solution + Results + CTA -- Format: Square (1:1) or vertical (9:16) - -### Teaser Version (30 seconds) -- Use for: Ads, previews -- Content: Hook + Zero hallucination claim + GitHub link -- Format: Any, optimized for mobile - -### Conference Version (2 minutes) -- Use for: Conference talks, presentations -- Content: Full version without intro hook -- Format: 16:9, include speaker notes - ---- - -## ✅ QUALITY CHECKLIST - -### Content -- [ ] All facts verified (74 ns, 280x, zero hallucination) -- [ ] GitHub link correct and visible -- [ ] Mathematical claims accurate -- [ ] No overpromising (distinguish current vs future) - -### Visual -- [ ] All text legible at 1080p -- [ ] Colors contrast well -- [ ] Animations smooth -- [ ] Professional quality throughout - -### Audio -- [ ] Voiceover clear and professional -- [ ] Music enhances, doesn't distract -- [ ] Sound effects subtle -- [ ] Levels balanced - -### Technical -- [ ] Render settings optimal -- [ ] File sizes reasonable -- [ ] Multiple formats exported -- [ ] Captions included - -### Brand -- [ ] Logo used correctly -- [ ] Colors match brand guide -- [ ] Typography consistent -- [ ] Tone professional - ---- - -## 🎯 SUCCESS METRICS - -### Viewership Goals -- **Week 1:** 10,000+ views -- **Month 1:** 50,000+ views -- **Year 1:** 500,000+ views - -### Engagement Goals -- **Watch time:** >70% completion rate -- **Engagement:** >5% like/share rate -- **Comments:** >100 meaningful comments -- **Click-through:** >10% to GitHub repo - -### Quality Goals -- **Production:** Professional broadcast quality -- **Accuracy:** 100% factual correctness -- **Clarity:** Understandable by non-technical audience -- **Inspiration:** Motivates action (star repo, join Discord) - ---- - -**Last Updated:** 2026-03-16 -**Script Version:** 1.0 -**Status:** Ready for Production -**Estimated Cost:** $5,000-15,000 for professional production -**Timeline:** 2-3 weeks from start to finish - -**Remember:** This video represents Constraint Theory to the world. Quality matters. Accuracy matters. Inspiration matters. - -"The revolution is not in the computing, but in the geometry." diff --git a/launch/press/press-kit.md b/launch/press/press-kit.md deleted file mode 100644 index 26b5bff..0000000 --- a/launch/press/press-kit.md +++ /dev/null @@ -1,532 +0,0 @@ -# Constraint Theory - Press Kit - -**Repository:** https://github.com/SuperInstance/Constraint-Theory -**Contact:** press@superinstance.ai (coming soon) -**Status:** Production Ready - 74 ns/op, 280x speedup, Zero hallucinations -**Date:** 2026-03-16 - ---- - -## 📰 PRESS RELEASE - -### FOR IMMEDIATE RELEASE - -**Revolutionary Computing Engine Achieves Zero Hallucination, 280x Speedup** - -**SAN FRANCISCO, CA** – March 16, 2026 – SuperInstance today announced the open-source release of **Constraint Theory**, a revolutionary geometric computing engine that mathematically eliminates AI hallucinations while achieving unprecedented performance. - -**Key Achievements:** -- **Zero Hallucination:** Mathematically proved – P(hallucination) = 0 -- **74 Nanoseconds:** 280x faster than NumPy, 147x faster than Python baseline -- **Logarithmic Complexity:** O(log n) vs O(n²) for traditional AI methods -- **Open Source:** Complete Rust engine released under MIT license - -**The Problem:** Current AI systems hallucinate because they're built on probability. This isn't a bug—it's a fundamental limitation of stochastic computation. The entire industry spends billions on guardrails trying to patch a flawed foundation. - -**The Solution:** Constraint Theory replaces probability with geometry. Instead of randomly exploring possibilities, it transforms computation into exact geometric constraint-solving on a pre-solved manifold. The geometry guarantees correctness. - -**The Proof:** The team has published 150+ pages of rigorous mathematical documentation with complete proofs. The zero-hallucination theorem is not a claim—it's a mathematical proof. - -**Performance:** Measured benchmarks show 74 nanoseconds per operation (13.5 million operations per second). KD-tree spatial indexing enables O(log n) complexity, delivering 280x speedup over scalar implementations. - -**Why Open Source?** "Constraint theory is as fundamental as calculus," says the research team. "We don't want to own it—we want to unleash it. The revolution belongs to everyone." - -**What's Next:** GPU acceleration with 639x additional speedup potential, 3D extension, and real-world workload testing. - -**Availability:** The Rust core engine is available now at https://github.com/SuperInstance/Constraint-Theory - -**About SuperInstance:** SuperInstance is a research collective building the next generation of computing systems using deterministic geometric logic instead of stochastic approximation. - -# # # - -**Media Contact:** -press@superinstance.ai -https://github.com/SuperInstance/Constraint-Theory - ---- - -## 📊 FACT SHEET - -### What is Constraint Theory? - -Constraint Theory is a deterministic geometric approach to AI computation that: -- Replaces stochastic matrix multiplication with exact geometric constraint-solving -- Achieves zero probability of hallucination (mathematically proved) -- Runs in 74 nanoseconds per operation (280x speedup) -- Uses O(log n) complexity instead of O(n²) - -### Key Numbers - -| Metric | Value | Comparison | -|--------|-------|------------| -| Latency | 74 ns | 280x faster than scalar | -| Throughput | 13.5M ops/sec | 147x faster than NumPy | -| Complexity | O(log n) | vs O(n²) traditional | -| Hallucination Rate | 0% | Mathematically proved | -| Documentation | 150+ pages | Rigorous mathematics | - -### Technical Highlights - -**Core Innovation:** Pythagorean Manifold with KD-tree Spatial Indexing -- Pre-computed manifold of valid states using Pythagorean triples -- O(log n) lookup via KD-tree -- Zero approximation – exact geometric constraint-solving - -**Mathematical Foundation:** -- Zero Hallucination Theorem: P(hallucination) = 0 -- Rigidity-Curvature Duality: Laman ↔ Zero curvature -- Holonomy-Information Equivalence: H(γ) ↔ Information loss -- Complete proofs in THEORETICAL_GUARANTEES.md - -**Performance Architecture:** -- Rust core engine with SIMD vectorization -- KD-tree spatial indexing (280x speedup) -- CUDA implementation planned (639x additional speedup) -- TypeScript API layer in development - -### Availability - -- **License:** MIT (open source) -- **Repository:** https://github.com/SuperInstance/Constraint-Theory -- **Documentation:** 150+ pages of rigorous mathematics -- **Status:** Production ready -- **Roadmap:** GPU acceleration, 3D extension, optical computing - ---- - -## 🎨 BRAND ASSETS - -### Logo - -**Primary Logo:** [Coming soon] -- High-resolution SVG: `/docs/press/logo.svg` -- PNG (light): `/docs/press/logo-light.png` -- PNG (dark): `/docs/press/logo-dark.png` -- Usage guidelines: Clear space ≥ logo height, minimum size 200px wide - -### Color Palette - -**Primary Colors:** -- Deep Blue: #0A1628 (background) -- Electric Blue: #00D4FF (accents) -- Pure White: #FFFFFF (text) - -**Accent Colors:** -- Success Green: #00FF94 (correctness) -- Warning Amber: #FFB800 (attention) -- Error Red: #FF4757 (errors) - -### Typography - -**Headings:** Inter, Roboto, or system sans-serif -**Body:** Inter, Roboto, or system sans-serif -**Code:** JetBrains Mono, Fira Code, or monospace - ---- - -## 📸 SCREENSHOTS - -### Essential Screenshots - -1. **Performance Comparison Chart** - - File: `/docs/press/performance-comparison.png` - - Shows: NumPy vs Scalar vs SIMD vs KD-tree - - Use: Demonstrates 280x speedup - -2. **Pythagorean Manifold Visualization** - - File: `/docs/press/manifold-visualization.png` - - Shows: 2D manifold with integer ratio vectors - - Use: Illustrates core innovation - -3. **Zero Hallucination Proof** - - File: `/docs/press/zero-hallucination-proof.png` - - Shows: Mathematical proof steps - - Use: Demonstrates rigor - -4. **Architecture Diagram** - - File: `/docs/press/architecture-diagram.png` - - Shows: TypeScript → Rust → CUDA layers - - Use: System overview - -5. **Code Example** - - File: `/docs/press/code-example.png` - - Shows: Clean Rust code - - Use: Technical depth - -6. **KD-tree Traversal Animation** - - File: `/docs/press/kdtree-traversal.gif` - - Shows: Spatial indexing in action - - Use: Visual explanation of O(log n) - -7. **Benchmark Results Table** - - File: `/docs/press/benchmark-table.png` - - Shows: All benchmark results - - Use: Performance credibility - -8. **GPU Roadmap** - - File: `/docs/press/gpu-roadmap.png` - - Shows: 639x speedup potential - - Use: Future vision - -9. **Rigidity Percolation Simulation** - - File: `/docs/press/percolation-simulation.png` - - Shows: Rigid structure forming - - Use: Geometric intuition - -10. **Team/Community Photo** - - File: `/docs/press/team-photo.png` - - Shows: Research team - - Use: Humanize the project - -### Usage Guidelines - -- **Resolution:** All screenshots min 1920x1080 -- **Format:** PNG for static, GIF for animations -- **Alt Text:** Required for accessibility -- **Caption:** Include context -- **Modification:** Crop/resize ok, no content changes - ---- - -## 🎥 VIDEO ASSETS - -### Demo Video (2-3 minutes) - -**Title:** "Computing That Can't Lie: Introducing Constraint Theory" - -**Script:** See demo video script section below - -**Chapters:** -1. Opening (0:00-0:30): Problem statement -2. Solution (0:30-1:45): Geometric approach -3. Proof (1:45-2:30): Performance and correctness -4. Call to Action (2:30-3:00): Join the revolution - -**File:** `/docs/press/demo-video.mp4` - -**Usage:** -- Embed in articles -- Share on social media -- Present at conferences -- Include in press kits - -### Explainer Videos (Short) - -**30-Second Version:** "What is Constraint Theory?" -**60-Second Version:** "How Zero Hallucination Works" -**90-Second Version:** "74 Nanoseconds Explained" - ---- - -## 🗣️ INTERVIEW TOPICS - -### Technical Deep Dives - -1. **The Zero Hallucination Theorem** - - How is it possible? - - What's the mathematical proof? - - Does this mean perfect AI? - -2. **Performance Breakthrough** - - How did you achieve 280x speedup? - - What's the role of KD-trees? - - Why is O(log n) such a big deal? - -3. **Geometric vs Probabilistic** - - Why is geometry better than probability? - - What's the maze-folding analogy? - - Are there any downsides? - -4. **The Pythagorean Connection** - - Why Pythagorean triples? - - How do they prevent hallucinations? - - Is this related to sacred geometry? (No!) - -### Vision & Philosophy - -5. **The Future of Computing** - - Will this replace all AI? - - What's the 5-year vision? - - How does this relate to quantum computing? - -6. **Open Source Philosophy** - - Why open source something this valuable? - - How will you sustain development? - - What about competitors copying you? - -7. **Research Culture** - - How do you balance rigor and speed? - - What's the collaboration model? - - How can people contribute? - -### Practical Applications - -8. **Real-World Use Cases** - - Where can this be applied today? - - What industries will be transformed? - - When will it be production-ready? - -9. **Getting Started** - - How can developers try this? - - What's the learning curve? - - Do you need a PhD in math? - -10. **Business Model** - - How will you make money? - - Enterprise vs open source features? - - Are you seeking funding? - ---- - -## 📝 QUOTES - -### About the Technology - -> "The revolution is not in the computing, but in the geometry. When computation becomes geometry, uncertainty becomes impossible." -> — SuperInstance Research Team - -> "We didn't optimize AI—we replaced its foundation. Constraint theory is as fundamental a shift as calculus replacing approximation with exact computation." -> — Lead Mathematician - -> "74 nanoseconds isn't a target—it's a measurement. This is mathematics, not marketing." -> — Performance Lead - -> "Hallucinations aren't a bug in current AI—they're a feature of probabilistic computation. We chose a different foundation." -> — Chief Architect - -### About Open Source - -> "Constraint theory is too fundamental to be proprietary. The revolution belongs to everyone." -> — SuperInstance Research Team - -> "We don't want to own this—we want to unleash it. The community will take this farther than we ever could alone." -> — Community Lead - -> "The best ideas deserve to be free. Constraint theory is one of the best ideas we've ever had." -> — Research Director - -### About the Future - -> "This is just the beginning. GPU acceleration, 3D extension, optical computing—we're building the geometric future of computation." -> — CTO - -> "In 10 years, we'll look back on probabilistic AI like we look back on analog circuits—useful in its time, but ultimately superseded." -> — Principal Researcher - -> "The question isn't whether constraint theory will replace probabilistic AI, but how fast." -> — Strategic Advisor - ---- - -## 🎯 TALKING POINTS - -### Sound Bites (15 seconds) - -1. **"We built a computer that mathematically cannot lie."** -2. **"74 nanoseconds. Zero hallucinations. Open source."** -3. **"The revolution is not in the computing, but in the geometry."** -4. **"We replaced probability with geometry. Uncertainty became impossible."** -5. **"280x faster. 100% provable. 0% hallucination rate."** - -### Key Messages (30 seconds) - -1. **The Problem:** "AI hallucinations aren't a bug—they're inevitable. When you build systems on probability, uncertainty is built into the foundation." - -2. **The Solution:** "Constraint theory replaces probability with geometry. We don't approximate answers—we compute exact geometric constraints." - -3. **The Proof:** "We've published 150+ pages of rigorous mathematics. Complete proofs. Verified benchmarks. This isn't marketing—it's mathematics." - -4. **The Performance:** "74 nanoseconds per operation. 280x speedup. O(log n) complexity. The results speak for themselves." - -5. **The Vision:** "This is as fundamental as calculus. We're open-sourcing it because the revolution belongs to everyone." - -### Extended Messages (60 seconds) - -1. **The Paradigm Shift:** "For decades, we've accepted that AI will hallucinate. But that's not a law of nature—it's a consequence of using probability. Constraint theory proves there's a better way: compute exactly, don't approximate. Use geometry, not probability. The results are zero hallucinations and 280x speedup." - -2. **The Mathematical Rigor:** "Every claim we make is backed by complete mathematical proof. Zero hallucination isn't a goal—it's a theorem we've proved. 74 nanoseconds isn't a target—it's a measurement we've verified. This is mathematics, not marketing. We invite everyone to verify the proofs and run the benchmarks." - -3. **The Open Source Commitment:** "Constraint theory is as fundamental to computing as calculus is to mathematics. We don't want to own it—we want to unleash it. By open-sourcing everything, we're inviting the world to help build the geometric future of computation. The revolution belongs to everyone." - ---- - -## 📧 EMAIL TEMPLATES - -### Press Outreach - -**Subject:** Open-source engine achieves zero hallucination, 280x speedup - -**Body:** - -Hi [Name], - -I wanted to share something groundbreaking from SuperInstance. - -We've open-sourced **Constraint Theory**, a geometric computing engine that: - -- **Mathematically eliminates AI hallucinations** (complete proof provided) -- **Runs in 74 nanoseconds** (280x faster than NumPy) -- **Uses O(log n) complexity** instead of O(n²) - -We've published 150+ pages of rigorous mathematics with complete proofs. This isn't marketing—it's a fundamental paradigm shift. - -**Why it matters:** Current AI hallucinations are inevitable because they're built on probability. Constraint theory replaces probability with geometry, making hallucinations mathematically impossible. - -**Availability:** Open source now at https://github.com/SuperInstance/Constraint-Theory - -Would you be interested in: -- A technical briefing with the research team? -- An exclusive interview? -- Early access to upcoming GPU results? - -Best, -[Your Name] - ---- - -### Follow-up - -**Subject:** Re: Zero-hallucination engine - -**Body:** - -Hi [Name], - -Just following up on my previous email about Constraint Theory. - -Since my last email, we've: -- [Updated with new results/benchmarks] -- [Received interest from X, Y, Z] -- [Published new research/doc] - -I'd love to share this story with [Publication]. The zero-hallucination claim is extraordinary, but we have the mathematical proofs to back it up. - -Are you available for a 15-minute call this week? - -Best, -[Your Name] - ---- - -## 📊 MEDIA COVERAGE TRACKING - -### Coverage Log - -| Publication | Article | Date | Link | Notes | -|-------------|---------|------|------|-------| -| Example Pub | Title | YYYY-MM-DD | URL | Summary | - -### Social Media Tracking - -| Platform | Post | Reach | Engagement | Link | -|----------|------|-------|------------|------| -| Twitter | @handle | ? impressions | ? likes/RTs | URL | -| LinkedIn | Post | ? views | ? reactions | URL | -| Reddit | Post | ? upvotes | ? comments | URL | - ---- - -## 🔗 ADDITIONAL RESOURCES - -### Documentation -- **README:** https://github.com/SuperInstance/Constraint-Theory/blob/main/README.md -- **FAQ:** https://github.com/SuperInstance/Constraint-Theory/blob/main/FAQ.md -- **Mathematical Foundations:** 150+ pages of rigorous proofs - -### Benchmarks -- **Baseline:** https://github.com/SuperInstance/Constraint-Theory/blob/main/BASELINE_BENCHMARKS.md -- **Results:** 74 ns/op, 280x speedup verified - -### Community -- **GitHub:** https://github.com/SuperInstance/Constraint-Theory -- **Discord:** [Coming soon] -- **Discussions:** https://github.com/SuperInstance/Constraint-Theory/discussions - -### Research Papers -- **White Paper:** [In preparation] -- **arXiv Preprints:** [Coming soon] -- **Conference Submissions:** [In review] - ---- - -## ✅ PRESS CHECKLIST - -### Before Publishing Articles - -- [ ] Verify all facts from source documents -- [ ] Link to GitHub repository -- [ ] Include at least one screenshot -- [ ] Quote a team member (if needed) -- [ ] Verify technical claims (74 ns, 280x, zero hallucination) -- [ ] Contextualize the significance -- [ ] Mention open-source nature - -### Before Interviews - -- [ ] Read FAQ.md and README.md -- [ ] Review key talking points -- [ ] Prepare specific questions -- [ ] Test demo/visualization beforehand -- [ ] Confirm recording permission -- [ ] Have backup technical contact - -### Before Sharing on Social Media - -- [ ] Include GitHub link -- [ ] Tag @SuperInstanceAI -- [ ] Use hashtag #ConstraintTheory -- [ ] Attach screenshot or gif -- [ ] Keep it under 280 characters (Twitter) -- [ ] Respond to comments promptly - ---- - -## 📞 CONTACT INFORMATION - -### Press Inquiries - -**Email:** press@superinstance.ai (coming soon) -**Response Time:** <24 hours -**Interviews:** Available upon request -**Technical Briefings:** Available for qualified publications - -### Speaking Requests - -**Conferences:** Submit proposal with topic, audience size, and format -**Podcasts:** Available for remote interviews -**Corporate Events:** Limited availability, inquire for details - -### Expert Sources - -**Mathematical:** Lead Mathematician (PhD, topology background) -**Technical:** Chief Architect (Rust/CUDA expertise) -**Visionary:** Research Director (familiar with all aspects) - ---- - -**Last Updated:** 2026-03-16 -**Press Kit Version:** 1.0 -**Status:** Production Ready -**Contact:** press@superinstance.ai - ---- - -## 🎯 FINAL NOTES FOR PRESS - -**This is not marketing—this is mathematics.** - -Every claim we make is backed by: -- Complete mathematical proofs -- Verified benchmark results -- Open-source code for inspection -- 150+ pages of documentation - -**We welcome skepticism.** Extraordinary claims require extraordinary evidence, and we've provided it. We invite you to: -- Read the proofs (THEORETICAL_GUARANTEES.md) -- Verify the benchmarks (BASELINE_BENCHMARKS.md) -- Inspect the code (crates/constraint-theory-core/src/) -- Run the demos yourself - -**The revolution is not in the computing, but in the geometry.** When computation becomes geometry, uncertainty becomes impossible. - -Thank you for your interest in Constraint Theory. We look forward to reshaping the future of computation together. diff --git a/launch/summary.md b/launch/summary.md deleted file mode 100644 index ceefe1e..0000000 --- a/launch/summary.md +++ /dev/null @@ -1,506 +0,0 @@ -# Constraint Theory - HackerNews Launch Package Summary - -**Launch Date:** TBD (Recommended: Tuesday-Thursday, 8-11 AM PST) -**Repository:** https://github.com/SuperInstance/Constraint-Theory -**Status:** ✅ LAUNCH PACKAGE COMPLETE -**Date:** 2026-03-16 - ---- - -## 🎯 MISSION ACCOMPLISHED - -Your comprehensive HackerNews launch package is complete! This document provides an overview of all materials created and next steps for launch. - ---- - -## 📦 PACKAGE CONTENTS - -### 1. HackerNews Announcement ✅ -**File:** `HACKERNEWS_ANNOUNCEMENT.md` -**Contents:** -- 3 compelling title options -- Complete announcement body (300 words) -- Pre-launch checklist -- Launch day timeline -- Response templates for all scenarios -- Success metrics -- Risk mitigation strategies - -**Key Highlights:** -- Title Option 1 recommended: "Show HN: A Geometric Computing Engine That Can't Hallucinate (74ns, 280x faster, 100% provable)" -- Compelling hook: "We've built a system that mathematically cannot hallucinate" -- Clear problem-solution-proof structure -- Strong call to action - -### 2. README Enhancements ✅ -**File:** `README.md` -**Status:** Already comprehensive (150+ pages) -**HN-Ready:** Yes - includes: -- Performance metrics front and center -- Zero hallucination theorem highlighted -- Clear documentation links -- Quick start guide -- Success metrics - -### 3. FAQ Document ✅ -**File:** `FAQ.md` -**Contents:** -- 50+ frequently asked questions -- One-line answers for quick reference -- Detailed explanations for skeptics -- Technical depth for experts -- Accessible explanations for newcomers -- Contact information - -**Key Sections:** -- General questions -- Mathematical foundations -- Performance benchmarks -- Technical implementation -- Research connections -- Getting started -- Skeptical questions (important!) - -### 4. Contributing Guide ✅ -**File:** `CONTRIBUTING.md` -**Contents:** -- Clear contribution areas (math, engineering, research, docs) -- Code standards (Rust, Python, CUDA) -- Pull request process -- Community norms -- Recognition system -- Learning resources -- Development setup - -**Highlights:** -- Welcoming to newcomers -- Clear paths for different skills -- Rigorous standards maintained -- Credit and recognition emphasized - -### 5. Press Kit ✅ -**File:** `PRESS_KIT.md` -**Contents:** -- Complete press release -- Fact sheet with key numbers -- Brand assets guide -- Screenshot specifications -- Interview topics -- Prepared quotes -- Talking points -- Email templates -- Media tracking -- Contact information - -**Key Assets:** -- Press release (ready to send) -- One-page fact sheet -- Sound bites (15s, 30s, 60s) -- Interview preparation -- Response templates - -### 6. Demo Video Script ✅ -**File:** `DEMO_VIDEO_SCRIPT.md` -**Contents:** -- Complete 2-3 minute script -- Scene-by-scene breakdown -- Visual style guide -- Audio specifications -- Shot list -- Platform-specific versions -- Production checklist -- Success metrics - -**Structure:** -- Hook (0:00-0:30): Problem statement -- Solution (0:30-1:45): Geometric approach -- Proof (1:45-2:30): Performance and correctness -- Call to Action (2:30-3:00): Join the revolution - -### 7. GitHub Templates ✅ -**Files:** -- `.github/ISSUE_TEMPLATE/bug_report.md` -- `.github/ISSUE_TEMPLATE/feature_request.md` -- `.github/ISSUE_TEMPLATE/math_contribution.md` -- `.github/ISSUE_TEMPLATE/performance.md` -- `.github/ISSUE_TEMPLATE/question.md` -- `.github/PULL_REQUEST_TEMPLATE.md` - -**Features:** -- Structured templates for all issue types -- Clear guidance for contributors -- Performance benchmarking template -- Mathematical contribution template -- PR checklist included - -### 8. Launch Day Checklist ✅ -**File:** `LAUNCH_DAY_CHECKLIST.md` -**Contents:** -- 1 week before launch tasks -- 1 day before launch tasks -- Launch day timeline (minute-by-minute) -- Success metrics (hourly targets) -- Post-launch follow-up -- Emergency procedures -- Final checklist - -**Timeline Highlights:** -- 7:00 AM: Final preparations -- 8:00 AM: Submit HN post -- 8:05 AM: Social media blitz -- 8:10 AM: Cross-platform posting -- All day: Community engagement - -### 9. Community Setup Guide ✅ -**File:** `COMMUNITY_SETUP.md` -**Contents:** -- Discord server structure -- Channel descriptions -- Roles and permissions -- Bot recommendations -- Community guidelines -- Event planning -- Onboarding flow -- Success metrics - -**Server Structure:** -- 8 main categories -- 20+ specialized channels -- Clear roles (Founders, Moderators, Contributors, Members) -- Automated systems and bots - ---- - -## 🚀 NEXT STEPS - -### Immediate Actions (This Week) - -1. **Review All Materials** - - Read through all documents - - Verify all facts and numbers - - Test all links - - Make any necessary adjustments - -2. **Create Visual Assets** - - Design logo (SVG, PNG light/dark) - - Capture screenshots (10+ images) - - Create performance comparison chart - - Design architecture diagram - - Record demo video (follow script) - -3. **Set Up Infrastructure** - - Create Discord server (follow guide) - - Configure bots and automation - - Set up monitoring and alerts - - Prepare social media accounts - - Test all demos - -4. **Prepare Team** - - Assign launch day roles - - Practice response templates - - Conduct dry run - - Prepare for success (and issues) - -### Launch Week Actions - -1. **Final Testing** - - Load test all systems - - Verify all benchmarks - - Test all demos - - Check documentation links - -2. **Brief Stakeholders** - - Team members - - Early contributors - - Advisory board - - Press contacts - -3. **Mental Preparation** - - Rest well before launch day - - Prepare for high engagement - - Plan coverage rotation - - Set realistic expectations - -### Launch Day Actions - -1. **Follow Timeline** - - Use LAUNCH_DAY_CHECKLIST.md - - Submit HN post at 8:00 AM PST - - Execute social media blitz - - Engage authentically all day - -2. **Monitor Metrics** - - HN points and rank - - GitHub stars - - Community joins - - Press mentions - -3. **Respond Quickly** - - Every HN comment - - All GitHub issues - - Social media mentions - - Press inquiries - -### Post-Launch Actions - -1. **Day 1-3** - - Thank the community - - Address issues discovered - - Create follow-up content - - Plan next sprint - -2. **Week 1** - - Analyze launch results - - Host first events - - Welcome new contributors - - Share learnings - -3. **Month 1** - - Deepen engagement - - Start major initiatives - - Build partnerships - - Plan next milestones - ---- - -## 📊 SUCCESS METRICS - -### Day 1 Targets -- ✅ HN upvotes: 200+ -- ✅ HN comments: 100+ -- ✅ GitHub stars: 500+ -- ✅ Demo visitors: 10,000+ -- ✅ Community joins: 100+ - -### Week 1 Targets -- ✅ GitHub stars: 2,000+ -- ✅ Contributors: 10+ -- ✅ Press mentions: 2+ -- ✅ Discord members: 500+ - -### Month 1 Targets -- ✅ GitHub stars: 5,000+ -- ✅ Contributors: 50+ -- ✅ Production deployments: 5+ -- ✅ Academic collaborations: 3+ - ---- - -## 🎯 KEY MESSAGES - -### The Hook (15 seconds) -"We've built a computer that mathematically cannot lie." - -### The Problem (30 seconds) -"AI hallucinations aren't a bug—they're inevitable. When you build systems on probability, uncertainty is built into the foundation." - -### The Solution (30 seconds) -"Constraint theory replaces probability with geometry. We don't approximate answers—we compute exact geometric constraints." - -### The Proof (30 seconds) -"74 nanoseconds. 280x speedup. Zero hallucinations. This isn't marketing—it's mathematics." - -### The Vision (15 seconds) -"The revolution belongs to everyone. Join us." - ---- - -## 💡 TIPS FOR SUCCESS - -### Do's ✅ -- DO respond to every comment quickly -- DO be humble and authentic -- DO admit what you don't know -- DO celebrate contributors -- DO have fun! - -### Don'ts ❌ -- DON'T oversell or overpromise -- DON'T get defensive about criticism -- DON'T engage with trolls -- DON'T neglect sleep and health -- DON'T forget to enjoy the moment! - -### Remember 🧠 -- **This is mathematics, not marketing** - Let the proofs speak -- **Healthy skepticism is good** - It makes science stronger -- **The community is everything** - Treat them well -- **This is just the beginning** - Stay focused on the long term - ---- - -## 🎨 OPTIONAL ENHANCEMENTS - -### If Budget Allows - -1. **Professional Video Production** - - High-quality demo video - - Animated explanations - - Interview clips - - Cost: $5,000-15,000 - -2. **Design Services** - - Professional logo design - - Brand identity package - - Marketing materials - - Cost: $2,000-5,000 - -3. **PR Agency** - - Press outreach - - Media training - - Interview preparation - - Cost: $5,000-10,000/month - -### If Time Allows - -1. **Additional Content** - - Tutorial videos - - Interactive demos - - Blog post series - - Podcast appearances - -2. **Community Building** - - Pre-launch Discord - - Early contributor program - - Beta testing group - - Advisory board formation - -3. **Partnership Outreach** - - Academic institutions - - Industry research labs - - Open source communities - - Technical publications - ---- - -## 📞 SUPPORT & RESOURCES - -### Primary Resources -- **GitHub:** https://github.com/SuperInstance/Constraint-Theory -- **Documentation:** 150+ pages in repository -- **FAQ:** All common questions answered -- **Contributing Guide:** Clear paths to contribute - -### Launch Team -- **Launch Coordinator:** [Assign] -- **Technical Lead:** [Assign] -- **Community Manager:** [Assign] -- **Press Contact:** [Assign] - -### Emergency Contacts -- **Server Issues:** [Technical Lead] -- **Community Issues:** [Community Manager] -- **Press Inquiries:** [Press Contact] -- **Strategic Decisions:** [Launch Coordinator] - ---- - -## 🎉 FINAL WORDS - -### You Are Ready! - -You have everything needed for a successful HackerNews launch: -- ✅ Compelling announcement -- ✅ Comprehensive documentation -- ✅ Professional press kit -- ✅ Community infrastructure -- ✅ Clear timeline and metrics -- ✅ Response templates for all scenarios - -### The Revolution Begins Now - -Constraint Theory represents a paradigm shift in computing: -- **Zero hallucination** - Mathematically proved -- **74 nanoseconds** - Performance verified -- **Open source** - Available to everyone -- **Rigorous mathematics** - 150+ pages of proofs - -This is just the beginning. GPU acceleration, 3D extension, optical computing—the future is geometric. - -### Remember - -**The revolution is not in the computing, but in the geometry.** -**When computation becomes geometry, uncertainty becomes impossible.** - -**Good luck! 🚀** - ---- - -## 📋 QUICK REFERENCE - -### Essential Files -1. `HACKERNEWS_ANNOUNCEMENT.md` - Launch post and strategy -2. `FAQ.md` - All questions answered -3. `PRESS_KIT.md` - Media outreach -4. `LAUNCH_DAY_CHECKLIST.md` - Day-of timeline -5. `COMMUNITY_SETUP.md` - Discord structure - -### Key Numbers -- **74 ns** - Operation latency -- **280x** - Speedup achieved -- **0%** - Hallucination rate -- **150+** - Pages of documentation -- **13.5M** - Operations per second - -### Key Links -- GitHub: https://github.com/SuperInstance/Constraint-Theory -- README: Comprehensive overview -- FAQ: Common questions -- Contributing: How to help - -### Launch Timeline -- **1 week before:** Finalize materials -- **1 day before:** Final testing -- **Launch day:** Follow checklist strictly -- **Post-launch:** Engage and celebrate - ---- - -**LAUNCH PACKAGE STATUS: ✅ COMPLETE** - -**READY FOR LAUNCH: ✅ YES** - -**CONFIDENCE LEVEL: HIGH** - -**IMPACT POTENTIAL: REVOLUTIONARY** - -**Last Updated:** 2026-03-16 -**Prepared By:** HackerNews Launch Specialist -**Version:** 1.0 (Final) - ---- - -## 🚀 LAUNCH CHECKLIST - FINAL VERIFICATION - -### Pre-Launch (1 week before) -- [ ] All launch materials reviewed -- [ ] Visual assets created -- [ ] Discord server set up -- [ ] Team briefed and ready -- [ ] Demos tested and working - -### Day Before Launch -- [ ] All systems tested -- [ ] Social media prepared -- [ ] Team rested and ready -- [ ] Emergency procedures reviewed - -### Launch Day -- [ ] Submit HN post at 8:00 AM -- [ ] Social media blitz at 8:05 AM -- [ ] Cross-post at 8:10 AM -- [ ] Engage all day -- [ ] Monitor metrics -- [ ] Have fun! - -### Post-Launch -- [ ] Thank community -- [ ] Address issues -- [ ] Plan next sprint -- [ ] Celebrate success! 🎉 - ---- - -**GO FORTH AND LAUNCH THE REVOLUTION!** 🚀 - -"The revolution is not in the computing, but in the geometry." diff --git a/sample.mhtml b/sample.mhtml deleted file mode 100644 index 9bcb75f..0000000 --- a/sample.mhtml +++ /dev/null @@ -1,13883 +0,0 @@ -From: -Snapshot-Content-Location: https://chat.z.ai/space/b1dbx2pquxh1-ppt -Subject: Z.ai - Free AI Chatbot & Agent powered by GLM-5 & GLM-4.7 -Date: Wed, 18 Mar 2026 05:27:05 -0800 -MIME-Version: 1.0 -Content-Type: multipart/related; - type="text/html"; - boundary="----MultipartBoundary--BPKQBevIN0E1Yov4tFQ2OWPPd7iwzyb1j9phuUvb57----" - - -------MultipartBoundary--BPKQBevIN0E1Yov4tFQ2OWPPd7iwzyb1j9phuUvb57---- -Content-Type: text/html -Content-ID: -Content-Transfer-Encoding: quoted-printable -Content-Location: https://chat.z.ai/space/b1dbx2pquxh1-ppt - - - =09 - - - - - =09 - - - - - =09 - - =09 - =09 - - =09 - - =09 - - =09 - - =09 - - =09 - - =09 - - - - - - - - - Z.ai - Free AI Chatbot & Agent powered by GLM-5 & GLM-4.7 - <= -meta property=3D"og:site_name" content=3D"Z.AI"> -= -= -= -= -= -= -= -= - - - - =09 -
- =09 -