doc_id: code-origin-audit title: “Code origin audit” language: en source_language: en implementation_status: current document_status: current translation_status: source-only last_verified: 2026-09-04 owners:
Historical scan baseline: 1518442865763d603571f5d77c13ffc3b0c96125 (2026-08-11) Evidence reconstruction: 2026-08-12 Report status: complete for the recovered scan results; bootstrap tooling confirmation remains open
The recovered historical scan surfaced no GPL, AGPL, commercial, or unknown-license candidate. One candidate is source-available (entry 23, MIT + Commons Clause); it was examined separately and Maka takes no material from it. Of 417 files with SCANOSS results, 392 matched Maka repositories and 25 matched other projects. Manual review classified 22 of the 25 external candidates as common or structurally necessary short code and three as real third-party lineage with an incorrect or incomplete scanner attribution:
ChatReasoning component are MIT-licensed Meta material;@ai-sdk/provider-utils and @ai-sdk/provider, not from the talkio package selected by the scanner.This audit adds Astryx and the AI SDK adaptation to the top-level LICENSE. NOTICE does not change: the fixed Astryx and AI SDK sources contain no upstream NOTICE, and their license notices are carried in LICENSE or in the source file. The 22 incidental matches do not add third-party material or attribution obligations.
This is bounded evidence, not proof that every line is original. Results depend on the fixed source snapshot, SCANOSS knowledge base, scanner thresholds, supported file types, and human classification.
The baseline contains 2,545 tracked files. The historical investigation used:
| Tool | Version | Scope | Data behavior | Preserved result |
|---|---|---|---|---|
| ScanCode Toolkit | 32.5.0 | 2,542 tracked files; local license, copyright, and package analysis | Local only | The raw result expired; the contemporaneous count and conclusion are retained here |
| SCANOSS JS CLI | 0.40.2 | 2,231 files supported by its winnowing scanner | The public API received winnowing fingerprints with obfuscated file identifiers; it did not receive source files or repository-relative paths | The 2,231-file JSON and WFP were recovered locally and used to reconstruct the table below |
| FOSSA CLI | 3.17.16 (d693e0d6f44d) | Static npm dependency analysis | Local static mode; no FOSSA project or cloud snippet scan | One npm project succeeded with no analysis warning |
The SCANOSS response identifies server 5.4.25 and knowledge bases 26.07 (monthly) and 26.08.10 (daily). Markdown, images, and other unsupported formats did not receive SCANOSS fingerprints. They were handled separately under Other provenance evidence.
The recovered JSON and WFP were working files and were not retained; they are not present on the machine that produced this report, and no hash or byte size of them was recorded before they were lost. This table therefore cannot be verified byte-for-byte against the artifacts it came from. What can be re-checked independently is each conclusion: every row names the upstream candidate, and the rows that drive a LICENSE or NOTICE decision carry their own reproduction path — see Model protocol adaptation for entry 17 and the git revisions cited in entry 23. A future scan should write its JSON and WFP to a retained location and record their SHA-256 and size in the report before any conclusion depends on them.
No new fingerprint or source upload was performed while reconstructing this report.
The original shell transcript was not retained. The following commands reconstruct the fixed snapshot and the scanner configuration represented by the recovered artifacts; a new API response can differ as the knowledge base changes:
AUDIT_SNAPSHOT="$(mktemp -d)" git archive 1518442865763d603571f5d77c13ffc3b0c96125 | tar -x -C "$AUDIT_SNAPSHOT" npx --yes --package scanoss@0.40.2 scanoss-js wfp --obfuscate -o scan.wfp "$AUDIT_SNAPSHOT" npx --yes --package scanoss@0.40.2 scanoss-js scan --wfp --obfuscate -o result.json scan.wfp
The final command sends fingerprints to the CLI's public default endpoint. Obtain project approval before running it. To reproduce only the local fingerprint set, stop after the wfp command. Compare results by source content hash rather than obfuscated filename because each obfuscated run may assign different identifiers.
The FOSSA run was constrained to static analysis. It detected the npm project successfully, but it did not perform snippet provenance analysis and therefore does not corroborate or replace the SCANOSS results.
The recovered result has 2,231 keys:
maka-agent/maka-agent;jackwener/maka-agent, a Maka fork;The WFP records the MD5 content hash and an obfuscated filename for every scanned file. Hashing the fixed Git snapshot mapped all 2,231 identifiers back to exactly one repository path; no key was unmapped. The table records the scanner‘s best candidate. “Common snippet” means that the matched text is a routine API shape, type declaration, test scaffold, or build boilerplate and that the candidate does not explain the local file’s provenance. A percentage is the scanner's reported coverage, not an authorship probability.
Several rows note that the matched file is absent from current main. That is a supplementary fact, not a disposition: the repository history is published too, so each row is classified on the matched text itself rather than on whether the file survives in the release snapshot. Candidate license fields are the scanner's, and entry 23 shows they can be wrong; any candidate whose license affects a LICENSE or NOTICE conclusion was re-checked against the upstream license file.
| # | Maka file and lines | SCANOSS candidate | Match | Classification and disposition |
|---|---|---|---|---|
| 1 | apps/desktop/src/main/__tests__/renderer-core-barrel-node-boundary.test.ts:30-52 | muratgur/ordinus v0.1.0, app/src/main/runtime/cli/process.ts:6-28 (MIT) | 33% | Common child-process Promise scaffold; no distinctive shared implementation. No attribution. File is absent from current main. |
| 2 | apps/desktop/e2e/new-task-reload.spec.ts:11-18 | clickety-clacks/clawline dictation-working-2026-05-12, playwright/tests/phase3-stream-management.spec.ts:348-355 (BSD-3-Clause) | 36% | Common Playwright click/fill/reload/expect sequence. No attribution. |
| 3 | apps/desktop/src/main/os-permission-policy.ts:6-11 | jasonzh0/CineScreen v1.3.4, src/platform/mac/permissions.ts:43-48 (MIT) | 7% | Necessary mapping of Electron permission literals. No distinctive expression. No attribution. |
| 4 | apps/desktop/src/main/session-model-input.ts:10-17 | enisz/bitbutler v1.2.0, packages/electron/src/ipc/server.ts:204-211 (MIT) | 35% | Common object narrowing and required-string validation. No attribution. |
| 5 | apps/desktop/src/renderer/astryx-theme/maka.js:14-195 | @astryxdesign/theme-neutral 0.1.0-canary.7847c5f, dist/neutral.js:11-192 (MIT) | 92% | True third-party lineage. Generated by the pinned Astryx CLI from makaTheme.ts, which extends theme-neutral. Covered by the new Astryx entry in LICENSE; generated header retained. |
| 6 | apps/desktop/src/renderer/astryx-theme-mode.ts:33-38 | kmcom-nuxt-layers 1.6.11, layers/shader/app/composables/useCSSColourUniform.ts:33-38 (ISC) | 13% | Common MutationObserver setup and cleanup. No attribution. |
| 7 | apps/desktop/src/renderer/use-system-ui-locale.ts:15-20 | @shak-hooks/cli 1.0.0, templates/react/usePreferredLanguage.ts:16-21 (license not returned) | 25% | Common browser language/media-query hook fragment. The candidate does not establish copying; no attribution. |
| 8 | packages/cli/src/session-driver-policy.ts:16-23 | pi-telegram-plus 0.0.1, lib/commands/session.ts:27-34 (MIT) | 10% | Conventional quote stripping and home-directory expansion. No attribution. |
| 9 | packages/computer-use/src/abortable-delay.ts:17-30 | @hashline/sdk 0.1.0, src/retry.ts:61-74 (Apache-2.0) | 43% | Conventional abortable timeout Promise. No distinctive shared expression. No attribution. |
| 10 | packages/computer-use/src/stdio-json-rpc.ts:23-29 | stefanhoelzl/codehydra code-server-windows-v4.107.1, extensions/markdown-review-editor/src/extension/opencode-handler.ts:44-50 (MIT) | 8% | Conventional AbortSignal Promise wrapper. No attribution. |
| 11 | packages/core/src/mcp.ts:78-86 | @combycode/llm-sdk 1.0.0, dist/plugins/mcp/types.d.ts:29-37 (MIT) | 7% | Protocol-shaped discriminated unions dictated by MCP content kinds. No attribution to the scanner candidate. |
| 12 | packages/runtime/scripts/build-filesystem-worker.mjs:4-12 | zhongshi2x8/dust2cc v1.1.1, scripts/build-page-script.mjs:4-12 (MIT) | 42% | Standard esbuild entry/output setup. No distinctive shared implementation. No attribution. |
| 13 | packages/mcp/src/__tests__/tool-output-validation.test.ts:4-28 | modelcontextprotocol/conformance 32523cc, examples/servers/typescript/everything-server.ts:33-57 (MIT/Apache-2.0) | 51% | MCP schema fixture using standard inputSchema/outputSchema fields. Local assertions and purpose differ. No copied fixture identified. |
| 14 | packages/core/src/user-question.ts:7-19 | baochipham942-eng/code-agent v0.2.4, src/shared/types.ts:489-501 (MIT) | 50% | Short structural types for questions, IDs, and answers. No distinctive shared expression. No attribution. |
| 15 | packages/eval/src/__tests__/fixtures/writer-worker.ts:3-22 | agent-awareness 0.4.5, src/commands/codex-hooks.ts:10-29 (MIT) | 86% | Small concurrency-test worker composed of standard file markers, a polling loop, and exit status. Candidate purpose and identifiers differ. No attribution. File is absent from current main. |
| 16 | packages/runtime/src/http-response.ts:9-14 | different-ai/openwork alpha-macos-v0.14.1-alpha.982-1aeb1e4, apps/server/src/server.ts:869-874 (MIT) | 35% | Necessary Fetch API reconstruction after deleting encoding/length headers. No distinctive expression. No attribution. |
| 17 | packages/runtime/src/model-protocol.ts:89-106,123-142,211-227,275-290 | talkio 1.0.0-alpha.1, src/types/common.ts:16-33,23-42,72-88,104-119 (Apache-2.0) | 14% | Real third-party lineage, wrong candidate. The source is the Apache-2.0 AI SDK, not talkio; see Model protocol adaptation. Both AI SDK packages are now named in LICENSE and the file carries an Apache-2.0 §4(b) modification notice. |
| 18 | packages/storage/src/__tests__/package-import.test.ts:5-14 | openbroker 1.9.5, scripts/setup/package-catalog.test.ts:4-13 (MIT) | 64% | Conventional spawnSync import-isolation test. No distinctive shared expression. No attribution. File is absent from current main. |
| 19 | packages/ui/src/__tests__/input-history.test.ts:14-46 | erichgschmidt/colorsmash v2-preview-6559730, ColorSmash-v2/src/core/prefs.test.ts:7-39 (MIT) | 24% | Minimal implementation of the standard Web Storage interface. No distinctive shared expression. No attribution. File is absent from current main. |
| 20 | packages/ui/src/astryx-chat-reasoning.tsx:37-73 | @astryxdesign/lab 0.1.2-canary.3f9afb0, src/ChatReasoning/ChatReasoning.tsx:181-217 (MIT) | 24% | True third-party lineage. The complete file already identifies the ejected Astryx v0.1.9 component, fixed commit, Meta copyright, MIT SPDX identifier, and local modifications. Covered by the new Astryx entry in LICENSE. |
| 21 | packages/ui/src/inline-rename-input.tsx:9-21 | 695714420/ClaudeCodeIDE 1.3.0, src/renderer/components/FileExplorer.tsx:481-493 (license not returned) | 25% | Short React prop declaration plus focus/select effect. The candidate does not establish copying; no attribution. |
| 22 | scripts/cu-physical-input-age.swift:8-16 | jianzhoujz/input-indicator v1.1.0, Sources/DoubaoInputIndicator.swift:352-360 (MIT) | 42% | Enumeration of the public CoreGraphics input event cases needed by the API. No distinctive expression. File is absent from current main. |
| 23 | packages/ui/src/utils.ts:all | roseratugo/okarin v0.3.13, apps/desktop/src/lib/utils.ts:all (MIT + Commons Clause; the scanner reported MIT/Mackerras acknowledgement) | 100% | Byte-identical, independently arrived at. Maka's file is a five-line clsx wrapper whose lineage is recorded in this repository: 3bedf3341 created it as the shadcn cn helper with twMerge, and 51f04793c (#1853) removed twMerge when the Astryx migration dropped Tailwind, leaving the current form. No upstream material was taken, so no attribution is required and the Commons Clause restriction reaches nothing in Maka. |
| 24 | scripts/apply-dependency-patches.mjs:17-22 | walkersutton/cyclemetry v0.2.0, scripts/release.mjs:4-9 (MIT) | 12% | Standard ESM fileURLToPath repository-root calculation. No attribution. |
| 25 | scripts/check-astryx-alignment.test.mjs:5-10 | naimkatiman/continuous-improvement v3.9.1, test/backfill.test.mjs:10-15 (MIT) | 25% | Standard Node test imports and new URL('..', import.meta.url) root calculation. No attribution. File is absent from current main. |
Entry 17 was re-examined directly against upstream source rather than against the scanner candidate. The finding is that packages/runtime/src/model-protocol.ts adapts AI SDK material and that the first revision of this report overstated what the file itself disclosed: the file's header claimed only that its shapes were “structurally equivalent” and “Maka-owned”, and named neither a source version nor the adaptation.
The adaptation is established by more than shape equivalence:
ProviderReference doc comment reproduces the upstream SharedV4ProviderReference comment near-verbatim, including its explanation of the type?: never constraint and its two examples, with only the type name changed.JSONValue, JSONObject, and JSONArray match upstream exactly, including the union order and the | undefined index signature.FilePart orders data, filename, mediaType while the tool-result file variant orders data, mediaType, filename. Both orderings are reproduced.CustomPart appearing second in AssistantContent.interface versus type is reproduced per declaration. ToolApprovalRequest and ToolApprovalResponse are the only content-part shapes declared as type in the Maka file, matching upstream.Maka‘s modifications are the removal of the deprecated file-* and image-* tool-result content variants, extraction of the inline tool-result content union into ToolResultContentPart, inlining of the shared provider aliases, and declaration of the role message shapes as interfaces. Roughly 170 of the file’s 418 lines — the tool definition, usage, finish reason, failure, request metadata, and stream contracts — are Maka-authored with no upstream counterpart.
The material spans two packages. JSONValue and the SharedV4 provider option, provider reference, and file data shapes come from @ai-sdk/provider, not from @ai-sdk/provider-utils. The first revision of this report named only provider-utils; LICENSE now names both.
The versions pinned in LICENSE are those installed when the adaptation was made in 3249f2a0ec2b389efcd935078c6c835c31195e88 (#1381 slice 1, 2026-07-23): @ai-sdk/provider-utils@5.0.11 and @ai-sdk/provider@4.0.3. The audit baseline snapshot resolved 5.0.25 and 4.0.7; every adapted declaration is byte-identical across those version ranges, so the two pinnings identify the same source material. Reproduce with:
npm pack @ai-sdk/provider-utils@5.0.11 @ai-sdk/provider@4.0.3
and compare package/src/types/, package/src/json-value/, and package/src/shared/v4/ against the module.
The file now carries the Apache-2.0 §4(b) modification notice that this lineage requires. Adding the component to LICENSE alone did not satisfy that obligation.
The top-level LICENSE now accounts for source material that is directly included or adapted in Maka:
@ai-sdk/provider-utils@5.0.11 and @ai-sdk/provider@4.0.3, from which packages/runtime/src/model-protocol.ts adapts provider-boundary shapes;c9fe4379e9959b9ba5eeff56def34c752223450e for the ejected ChatReasoning source and 110987b4505dc44119b94bed53d92b9840088a61 for theme-neutral v0.4.0 and its generated theme material;trycua/cua at 8c921b2b3bf13494724ead4f0a814d80c56a7e8b, already recorded by pull request #2676.The desktop binary distribution also carries generated production npm notices at apps/desktop/resources/licenses/npm/THIRD_PARTY_NOTICES.txt, and the build checks that artifact byte-for-byte.
The audit also corrected the notice generator's version-pinned Apache override. It previously read the entire top-level LICENSE; once that file acquired third-party appendices, those unrelated appendices were copied into the @ai-sdk/provider-utils package section and the checked artifact became stale. The override now extracts only the standard Apache-2.0 portion, with a focused regression test.
No NOTICE addition is warranted. The fixed Astryx and trycua/cua revisions have no upstream NOTICE; neither AI SDK package has an upstream NOTICE; and MIT copyright notices already preserved in LICENSE or source should not be duplicated into NOTICE. This follows ASF guidance to keep NOTICE limited to legally required notices and to make LICENSE/NOTICE reflect only bundled bits.
The SCANOSS table above covers only what its winnowing scanner fingerprints, which is source code in supported formats. Additional incoming-material and same-author transfer records that sit outside that scan are recorded here. The records distinguish third-party attribution obligations from contributor-confirmed ASF contributions rather than treating every cross-repository lineage as third-party code.
packages/runtime/src/tool-output.ts and packages/runtime/src/edit-replace.ts each state in a header comment that they are adapted from opencode. Both statements are accurate and the adaptation is substantial:
truncateToolOutput follows truncate.output() line for line, sharing the 2000-line and 50 KiB budgets, the direction?: 'head' | 'tail' option, the local names out, bytes, hitBytes, size, preview, removed, and unit, and the asymmetric newline accounting that uses (i > 0 ? 1 : 0) when keeping the head and (out.length > 0 ? 1 : 0) when keeping the tail. Maka added byte-safe single-line slicing, trailing-newline handling, and the recovery hint, and dropped the upstream spill-file machinery.edit-replace.ts reuses the escape-normalizing replacer verbatim at the level of expression: the regular expression /\\(n|t|r|'|"||\|\n|$)/gis character-for-character identical and its nine branches appear in the same order, rewritten from aswitchinto anif` chain. The line-trimmed and whitespace-normalized matchers follow the same upstream structure.Upstream is MIT, Copyright (c) 2025 opencode. The repository now resolves to anomalyco/opencode; the comparison used commit fc80874. Because opencode is not an npm dependency, scripts/generate-third-party-notices.mjs cannot discover it: that generator walks the npm production dependency trees of @maka/desktop and maka-agent only. The root LICENSE therefore records the fixed source revision, adapted files, upstream lineage, copyright, and MIT permission notice explicitly. No NOTICE addition is warranted because upstream ships none and the MIT attribution belongs in LICENSE.
packages/core/src/model-metadata.generated.ts and packages/runtime/src/telemetry/model-pricing.generated.ts are build-time, untracked derivations of the committed scripts/model-metadata/models-dev-api.snapshot.json projection selected from https://models.dev/api.json. This is a two-level authority boundary: models.dev remains the upstream refresh source, while the committed snapshot is the sole build input for a particular repository revision and release. An explicit refresh imports upstream changes for review; normal installation and build paths never fetch a moving latest response. At run time the Runtime Host fetches https://models.dev/api.json once at startup and holds the projection in memory for that process; it is never written to disk and never enters a build, so the redistributed artifact stays bound to the committed snapshot. That fetch goes through the same outbound admission as the WebFetch tool, so privacy mode suppresses it and a configured proxy carries it. Upstream anomalyco/models.dev is MIT, Copyright (c) 2025 models.dev. The individual entries are facts and are not themselves copyrightable, but the selection and arrangement — which providers and fields are carried, and upstream's normalized structures such as lifecycle and thinkingOptions.efforts — come from that database. The same generator boundary applies: models.dev is not an npm dependency, so the root LICENSE records its source, repository, copyright, MIT permission notice, generated outputs, and snapshot provenance explicitly. The committed snapshot and generated headers bind the redistributed projection to recorded digests, making the fixed input identifiable without relying on the npm notice generator or a runtime network request.
The embedded-browser work introduced by Maka commit fab537af179232cc88dc39314038000f70d15d05 was ported from two fixed source batches in Astro-Han/pawwork:
aff7ce202f5ccb9a7166a95172aa754b0d4de7db;BrowserSession, generic observe→act tools, and their desktop integration: e3595b705c687c369828736ecd154127ed44f545.Both PawWork snapshots are Apache-2.0. On 2026-08-23, their author AstroHan confirmed that these are the only two source batches, that all code carried into Maka was his own work, and that he submitted it directly as an ASF contribution. PawWork's repository-level NOTICE also describes unrelated OpenCode material, but that notice does not pertain to this contributor-confirmed slice. No PawWork or OpenCode bytes outside the two stated batches are part of this port.
The exact Maka introduction boundary is the following 23-file change. This list records the transfer boundary, not an assertion that every byte in each integration file came from PawWork:
apps/desktop/src/global.d.tsapps/desktop/src/main/__tests__/automation-host.test.tsapps/desktop/src/main/__tests__/browser-logic.test.tsapps/desktop/src/main/__tests__/browser-session.test.tsapps/desktop/src/main/__tests__/browser-tools.test.tsapps/desktop/src/main/__tests__/browser-view-manager.test.tsapps/desktop/src/main/__tests__/cdp-bridge.test.tsapps/desktop/src/main/browser/automation-host.tsapps/desktop/src/main/browser/browser-host.tsapps/desktop/src/main/browser/browser-tools.tsapps/desktop/src/main/browser/cdp-bridge.tsapps/desktop/src/main/browser/controller.tsapps/desktop/src/main/browser/logic.tsapps/desktop/src/main/browser/options.tsapps/desktop/src/main/browser/session.tsapps/desktop/src/main/browser/view-manager.tsapps/desktop/src/main/main.tsapps/desktop/src/preload/preload.tsapps/desktop/src/renderer/browser-panel.tsxapps/desktop/src/renderer/main.tsxapps/desktop/src/renderer/styles.csspackages/core/src/browser.tspackages/core/src/index.tsSubsequent refactors moved apps/desktop/src/renderer/browser-panel.tsx to apps/desktop/src/renderer/features/workbar/tools/browser/browser-panel.tsx and deleted the old packages/core/src/index.ts barrel. Those changes do not add another source batch; the introduction commit and fixed upstream revisions remain the provenance anchors.
Pull request #2695 removed the 29 bundled Skills whose individual origins could not be confirmed. The one retained bundled Skill, computer-use, carries its origin and review evidence here rather than in SKILL.md so that provenance edits do not change installed Skill content hashes.
origin: independently-authored, Apache-2.0.maka.cu/2 schema and model-facing tool contract, and Maka Computer Use tests. No third-party Skill bodies were used.2fb83e20b71124bc4a4f2fd4e40f971e415d0ea5; contributor confirmed on 2026-08-11.3c7683b9793e97cba7d8536f6864da0e38f24c30 on 2026-08-12. That review covers the accuracy of this origin record; it does not make a legal or ASF release determination about implementation inputs (see Computer Use implementation inputs).Pull requests #1255 and #1883 and the contributor's confirmation on pull request #2676 state that a fixed signed SkyComputerUseService binary was statically inspected and that specific cursor geometry, motion values, thresholds, path-measurement choices, and core scoring weights were recovered and retained. The repository contains neither OpenAI source nor executable bytes. This is a narrow statement about the listed facts, not a classification of the Computer Use implementation as a whole as binary-derived.
The exact boundary, locally authored divergences, and artifact reproducibility limit are recorded in docs/computer-use-cursor-provenance.md. Whether the applicable agreement and law permit retaining those listed facts remains a human legal/ASF question. The provenance review does not answer it.
A maintainer confirmed that the following assets were AI-generated and that no third-party image, logo, or artwork was uploaded as input:
apps/desktop/assets/icon.pngapps/desktop/resources/status/cu-status.pngapps/desktop/resources/status/cu-status@2x.pngicon.png used ChatGPT Image, as did the former README heroes .github/assets/maka-hero.en.png and maka-hero.zh-CN.png, removed on 2026-09-04. The status PNGs were exported from an AI-generated SVG. Exact prompts were not retained and may have requested a visual style reference, so this confirmation is provenance evidence rather than a guarantee that no style or IP concern exists.
The README heroes now in .github/assets/readme-hero.*.png are not generated art: website/scripts/readme-hero.mjs renders them from the built website, so they carry only the site's own copy, styles and fonts, whose provenance is recorded with website/.
The ASF source verifier reads this inventory from the candidate itself. A non-text image must match one of these paths; executable and archive magic is rejected even if a path is listed here.
.github/assets/*.png: the README hero images rendered from the website, recorded above.apps/desktop/assets/icon.png: the AI-generated application mark recorded above.apps/desktop/assets/app-icons/*.png: mono.png is the contributor-submitted grayscale derivative of the application mark from pull request #3431; the remaining variants are reproducibly rendered from the Apache-licensed geometry and palette in scripts/generate-app-icons.py and byte-checked by scripts/generate-app-icons.test.mjs.apps/desktop/build/*.png: contributor-submitted DMG artwork from pull request #3817; that contribution records Codex as review and verification assistance, not as the source of the artwork.apps/desktop/resources/status/*.png: the status images recorded above and reproducibly rendered by scripts/generate-cu-status-icons.mjs.docs/images/**/*.png: screenshots of Maka's own user interface committed as review evidence, including pull requests #3584 and #3588.packages/core/src/__tests__/foreign-session.test.ts: Apache-licensed source fixture containing a literal NUL, bidi override, and zero-width character to verify imported-session sanitization.packages/runtime-host/src/protocol/artifact.ts: Apache-licensed protocol source containing literal C0 and DEL characters in the control-character rejection expression.packages/storage/src/__tests__/foreign-session-store.test.ts: Apache-licensed storage fixture containing literal bidi and bell characters to verify durable imported-title sanitization.packages/storage/src/__tests__/mcp-config-store.test.ts: Apache-licensed validation fixture containing a literal control character in a rejected MCP tool name.packages/storage/test-fixtures/v0.1.6-operational-state/runtime.sqlite: migration fixture created through Maka's public storage APIs at tag v0.1.6; its exact origin and SHA-256 are recorded in the adjacent README.md.The initial commit is 8fd91a43cc64cdde58cfbd046256effce0cfa6f8 (2026-05-19). The current contributor account is expected to confirm the bootstrap history. The working account is that Raft orchestrated Claude and Codex, but the repository does not establish:
Until the contributor supplies that information, this item is pending contributor confirmation. It does not block publication of this evidence report, but it prevents the stronger conclusion that every bootstrap tool's applicable terms have been verified against ASF generative-tooling guidance.
ASF guidance permits AI-assisted contributions when the tool terms do not restrict output incompatibly with open source and any included third-party material is absent or used under a compatible license. Code scanning can provide reasonable evidence, but the ASF does not prescribe SCANOSS or FOSSA and a scanner result is not an originality certificate.
Before code transfer or release review:
LICENSE/NOTICE decision;No additional source-removal issue is indicated by the recovered scan. A recurring cloud snippet scan is not recommended until the project chooses a service, data policy, stable thresholds, and an owner for false-positive review. The local dependency-notice check remains the narrower, deterministic CI control for shipped npm dependencies.
That check has a structural blind spot worth stating plainly. scripts/generate-third-party-notices.mjs derives its inventory from npm production dependency trees, so material that enters the repository as vendored or adapted source, or as generated data, is invisible to it by construction — not missed by accident. The opencode adaptations and models.dev snapshot are now registered explicitly in the root LICENSE; every future source of this kind must likewise be registered by hand unless the generator gains a checked manual inventory.
The scanner has a comparable blind spot. Entry 17 was matched at 14% against an unrelated package, and what actually identified its origin was structural: near-verbatim doc comments, preserved declaration forms, and a reproduced upstream inconsistency. A follow-up sweep for the same pattern across the repository — comparing locally declared types against installed dependency declarations by name overlap and ordered property sequences — found no second instance. That sweep is still blind to a copy whose type and field names were renamed, and no comment, import, or architectural note suggests such a case exists.
OpenAI Codex reconstructed the scan evidence, compared the fixed source snapshot with the recovered scanner output, and drafted this report and the accompanying attribution changes. The human contributor of record must review and own the classifications, accuracy, provenance, licensing, and submission decision.