178 lines
7.3 KiB
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"
|
|
}
|