hololake-system-architecture/product-source/hololake-native-desktop/contracts/web-novel-open-source-donor-assessment.json

178 lines
7.3 KiB
JSON

{
"schema": "hololake.web-novel-open-source-donor-assessment/v1",
"record_id": "HLP-WEBNOVEL-OSS-DONORS-001",
"state": "PRIMARY_SOURCE_CODE_REVIEW_COMPLETE_IMPLEMENTATION_BOUNDARY_LOCKED",
"reviewed_at": "2026-08-18",
"download_route": {
"relay": "BS-SG-003",
"relay_role": "SINGAPORE_OVERSEAS_SOURCE_DOWNLOAD_RELAY",
"local_transport": "DIRECT_SSH_FROM_LOCAL_MACHINE",
"external_drive_root": "/Volumes/JZAO/HoloLake/development/网文行业开源源码调研-20260818",
"repositories_are_clean_git_worktrees": true
},
"rule": "READ_REAL_SOURCE_AND_EXTRACT_AUDITABLE_ENGINE_PATTERNS_NEVER_REPLACE_FUNCTIONAL_ENGINES_WITH_STATIC_DEMOS",
"candidates": [
{
"name": "Kindling",
"upstream": "https://github.com/smith-and-web/kindling",
"commit": "1b83cb28eca84e76282d0aa6838d68b5786ecf5f",
"branch": "main",
"observed_license": "MIT",
"role": "PRIMARY_LOCAL_FIRST_AUTHOR_ENGINE_DONOR",
"inspected_paths": [
"src-tauri/src/db/schema.rs",
"src-tauri/src/commands/crud.rs",
"src-tauri/src/commands/snapshot.rs",
"src-tauri/src/commands/export.rs",
"src-tauri/src/parsers",
"src/lib/components/ScenePanel.svelte",
"src/lib/components/BeatView.svelte"
],
"observed_engine": [
"TAURI_RUST_SQLITE_LOCAL_FIRST_STORAGE",
"PROJECT_CHAPTER_SCENE_BEAT_HIERARCHY",
"CHARACTER_LOCATION_REFERENCE_RELATIONS",
"500MS_DEBOUNCED_SAVE_WITH_UNMOUNT_FLUSH",
"TRANSACTIONAL_REORDER_AND_RESTORE",
"COMPRESSED_PROJECT_SNAPSHOTS",
"MARKDOWN_DOCX_EPUB_SCRIVENER_IMPORT_EXPORT"
],
"decision": "ADOPT_ARCHITECTURAL_PATTERNS_AND_REIMPLEMENT_HOLOLAKE_ACCOUNT_SCOPED_ENGINE"
},
{
"name": "novelWriter",
"upstream": "https://github.com/vkbo/novelWriter",
"commit": "416078506bbd690c5ad2bf736ec363ed2c0db89c",
"branch": "main",
"observed_license": "GPL-3.0-or-later_WITH_ADDITIONAL_ASSET_LICENSES",
"role": "MATURE_AUTHOR_WORKFLOW_REFERENCE",
"inspected_paths": [
"novelwriter/core/storage.py",
"novelwriter/core/document.py",
"novelwriter/core/tree.py",
"novelwriter/core/index.py",
"novelwriter/core/sessions.py",
"novelwriter/manuscript"
],
"observed_engine": [
"HUMAN_READABLE_PROJECT_STORAGE",
"HANDLE_BASED_PROJECT_TREE",
"INDEXED_TAGS_REFERENCES_AND_BACK_REFERENCES",
"FILTERED_MANUSCRIPT_BUILDS",
"WRITING_SESSION_WORD_AND_TIME_STATISTICS"
],
"decision": "STUDY_CONCEPTS_ONLY_DO_NOT_COPY_GPL_SOURCE"
},
{
"name": "Manuskript",
"upstream": "https://github.com/olivierkes/manuskript",
"commit": "7abdba31abbd97bfdd80e72786fe2191d7f42d4a",
"branch": "develop",
"observed_license": "GPL-3.0",
"role": "PLANNING_AND_STORY_BIBLE_REFERENCE",
"inspected_paths": [
"manuskript/models/outlineItem.py",
"manuskript/models/characterModel.py",
"manuskript/models/worldModel.py",
"manuskript/load_save/version_1.py",
"manuskript/exporter"
],
"observed_engine": [
"NESTED_OUTLINE_WITH_COMPILE_FLAGS",
"CHARACTER_WORLD_AND_PLOT_MODELS",
"TEXT_REVISIONS_ON_CHANGE",
"RECURSIVE_WORD_TARGET_AGGREGATION",
"SPLIT_MERGE_AND_MULTI_FORMAT_EXPORT"
],
"decision": "STUDY_CONCEPTS_ONLY_DO_NOT_COPY_GPL_SOURCE"
},
{
"name": "novel-plus",
"upstream": "https://github.com/201206030/novel-plus",
"commit": "d9f3f464a6bac1f59652955d0901f05438010190",
"branch": "develop_xxy",
"observed_license": "Apache-2.0",
"role": "PRIMARY_CHINESE_WEB_NOVEL_EDITORIAL_AND_OPERATIONS_DONOR",
"inspected_paths": [
"novel-front/src/main/java/com/java2nb/novel/controller/AuthorController.java",
"novel-front/src/main/java/com/java2nb/novel/service/impl/BookServiceImpl.java",
"novel-admin/src/main/java/com/java2nb/novel/controller",
"novel-common/src/main/java/com/java2nb/novel/entity",
"doc/sql/novel_plus.sql"
],
"observed_engine": [
"AUTHOR_AND_PEN_NAME_IDENTITY",
"AUTHOR_OWNERSHIP_CHECKS_BEFORE_MUTATION",
"BOOK_CHAPTER_CONTENT_SEPARATION",
"ATOMIC_CHAPTER_WORD_COUNT_AND_LATEST_CHAPTER_UPDATES",
"BOOK_AND_COMMENT_REVIEW_STATUSES",
"RECOMMENDATION_SLOTS_RANKING_READING_HISTORY_AND_SUBSCRIPTIONS",
"DAILY_AND_MONTHLY_AUTHOR_INCOME_STATISTICS"
],
"decision": "ADOPT_DOMAIN_AND_TRANSACTION_PATTERNS_WITHOUT_IMPORTING_THE_SERVER_APPLICATION"
},
{
"name": "Editoria",
"upstream": "https://github.com/Coko-Foundation/editoria",
"commit": "d22b40bda3dd6519e45a56fe1b3bafaa339832b5",
"branch": "main",
"observed_license": "MIT",
"role": "EDITORIAL_TEAM_AND_PRODUCTION_WORKFLOW_REFERENCE",
"inspected_paths": [
"app/components/bookbuilder/src/queries/getBook.js",
"app/components/bookbuilder/src/queries/getBookTeams.js",
"app/components/bookbuilder/src/queries/updateTeam.js",
"app/components/bookbuilder/src/queries/updateWorkflowState.js",
"app/components/bookbuilder/src/queries/unlockBookComponent.js",
"app/components/bookbuilder/src/ConnectedBookBuilder.js"
],
"observed_engine": [
"BOOK_COMPONENT_WORKFLOW_STAGES",
"OBJECT_SCOPED_TEAMS_AND_ROLES",
"EDIT_LOCKS_AND_ADMIN_UNLOCK",
"ORDERED_BOOK_DIVISIONS_AND_COMPONENTS",
"WORD_INGEST_AND_MULTI_FORMAT_EXPORT"
],
"decision": "ADOPT_WORKFLOW_LOCK_AND_ROLE_SEMANTICS_ONLY_REPOSITORY_IS_CLIENT_ONLY_AND_DEPENDS_ON_EXTERNAL_KETIDA_SERVER"
},
{
"name": "Wax ProseMirror",
"upstream": "https://github.com/Coko-Foundation/wax-prosemirror",
"commit": "6cc46bfe3aa9e729cdb4e3802ccbd5c8a22f0f56",
"branch": "master",
"observed_license": "MIT_WITH_SEPARATE_TRACK_CHANGES_NOTICE",
"role": "EDITOR_ANNOTATION_AND_TRACK_CHANGES_REFERENCE",
"inspected_paths": [
"wax-prosemirror-core/src/utilities/track-changes/trackedTransaction.js",
"wax-prosemirror-services/src/TrackChangeService",
"wax-prosemirror-services/src/CommentsService",
"wax-prosemirror-services/src/YjsService/YjsService.js"
],
"observed_engine": [
"TRANSACTION_LEVEL_INSERT_DELETE_FORMAT_TRACKING",
"ACCEPT_AND_REJECT_CHANGE_OPERATIONS",
"INLINE_COMMENT_MARKS_AND_REPLY_THREADS",
"OPTIONAL_YJS_COLLABORATION_PROVIDER"
],
"decision": "DEFER_DIRECT_INTEGRATION_REIMPLEMENT_SMALL_LOCAL_REVIEW_MODEL_FIRST_BECAUSE_STACK_AND_PACKAGES_ARE_OLD"
}
],
"implementation_selection": {
"direct_external_runtime_packages_added": 0,
"external_source_files_copied": 0,
"native_owner": "HOLOLAKE_TAURI_RUST_CORE",
"storage": "AUTHENTICATED_ACCOUNT_SCOPED_SQLITE",
"selected_patterns": [
"PROJECT_VOLUME_CHAPTER_HIERARCHY",
"DEBOUNCED_CHAPTER_SAVE_WITH_FLUSH",
"OPTIMISTIC_REVISION_CONFLICTS",
"CHAPTER_VERSION_HISTORY_AND_PROJECT_CHECKPOINTS",
"CHARACTER_WORLD_RELATION_AND_FORESHADOW_GRAPH",
"EDITORIAL_WORKFLOW_STATE_MACHINE_AND_REVIEW_NOTES",
"CONTINUITY_AUDIT",
"AUTHORIZED_OPERATIONS_METRICS",
"MARKDOWN_EXPORT"
]
},
"legal_boundary": "PRELIMINARY_ENGINEERING_SCREEN_NOT_FINAL_DISTRIBUTION_LEGAL_APPROVAL"
}