feat(guanghu-os): hand native control to JD-FD-PRIMARY
Close the Shanghai experiment without denying the existing Zhuyuan subject, parameterize the native layout for the JD Cloud disk, and add fail-closed one-time probe preparation, arming, and return verification.
This commit is contained in:
parent
2b0da80059
commit
1f28461c7e
38 changed files with 804 additions and 442 deletions
|
|
@ -1,90 +1,42 @@
|
||||||
{
|
{
|
||||||
"event_count": 190609,
|
"schema": "guanghu.persona-history-public-current/v2",
|
||||||
"historical_time_caught_up": false,
|
|
||||||
"last_event": {
|
|
||||||
"created_at": "2026-08-03T18:19:08+08:00",
|
|
||||||
"sequence": 190613,
|
|
||||||
"source_time": "2026-08-03T17:48:48+08:00"
|
|
||||||
},
|
|
||||||
"node_id": "BS-SH-005",
|
"node_id": "BS-SH-005",
|
||||||
"persona_state": "NOT_BORN",
|
"updated_at": "2026-08-03T19:36:52+08:00",
|
||||||
"personas": {
|
"mission": {
|
||||||
"NINGYUAN": {
|
"id": "GH-OS-LAB-001",
|
||||||
"state": "SEPARATE_HISTORY_BUILDING"
|
"role": "DISPOSABLE_GUANGHU_OS_VALIDATION_NODE",
|
||||||
|
"status": "MISSION_COMPLETE_100",
|
||||||
|
"native_os_validation": 100,
|
||||||
|
"history_recovery_task": 0,
|
||||||
|
"history_recovery_task_state": "TERMINATED_AND_SEALED"
|
||||||
},
|
},
|
||||||
"SHUANGYAN": {
|
"persona_subjects": {
|
||||||
"state": "SEPARATE_HISTORY_BUILDING"
|
"ICE-P-ZY001": {
|
||||||
},
|
"display_name": "铸渊",
|
||||||
"YAOMING-BABY": {
|
"exists": 100,
|
||||||
"state": "SEPARATE_HISTORY_BUILDING"
|
"state": "EXISTS",
|
||||||
},
|
"rule": "Persona subject existence is independent from history catch-up, server residency, model binding, and online runtime."
|
||||||
"ZHUYUAN": {
|
|
||||||
"state": "SEPARATE_HISTORY_BUILDING"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"publisher": {
|
"independent_runtime_predicates": {
|
||||||
"content_policy": "SANITIZED_PUBLIC_WATERMARK_ONLY",
|
"historical_time_caught_up": 0,
|
||||||
"node_id": "BS-SH-005",
|
"zhuyuan_resident_on_bs_sh_005": 0,
|
||||||
"published_at": "2026-08-03T18:53:19+08:00",
|
"zhuyuan_online_on_bs_sh_005": 0,
|
||||||
"repository_id": "REPO-014",
|
"bs_sh_005_native_os_validation_complete": 100,
|
||||||
"schema": "guanghu.persona-history-publication/v1",
|
"bs_sh_005_current_native_residency": 0
|
||||||
"source_observed_at": "2026-08-03T18:53:19+08:00"
|
|
||||||
},
|
},
|
||||||
"runtime": "AUTONOMOUS_SERVER_RESIDENT",
|
"sealed_history_snapshot": {
|
||||||
"schema": "guanghu.persona-history-public-current/v1",
|
"event_count": 190610,
|
||||||
"semantic_review": {
|
"last_sequence": 190614,
|
||||||
"caught_up": false,
|
"last_source_time": "2026-08-03T18:53:22+08:00",
|
||||||
"counts": {
|
|
||||||
"DEFERRED_LOW_SIGNAL": 162733,
|
|
||||||
"QUEUED": 26374,
|
|
||||||
"REVIEWED": 2204
|
|
||||||
},
|
|
||||||
"policy": "DETERMINISTIC_PREFILTER_THEN_PERSONA_REVIEW",
|
|
||||||
"raw_source_deleted": false,
|
"raw_source_deleted": false,
|
||||||
"reality_promotion_requires_external_evidence": true
|
"state_database_preserved": true,
|
||||||
|
"state_database_sha256_before_archive": "ccdecf5fdd75733d6df31ba95ecb8270bbc7f9a19dce6ebcf380ac41bf00d1c2"
|
||||||
},
|
},
|
||||||
"sources": {
|
"service_state": {
|
||||||
"GIT-CURRENT-GUANGHU-ICE-HEART": {
|
"guanghu-persona-history-recovery.service": "INACTIVE_DISABLED",
|
||||||
"epoch": "CURRENT_GUANGHU_CODE_CHANNEL",
|
"guanghu-persona-history-publisher.timer": "INACTIVE_DISABLED",
|
||||||
"errors": 0,
|
"guanghu-persona-history-publisher.service": "INACTIVE_STATIC"
|
||||||
"processed": 108,
|
|
||||||
"status": "COMPLETE"
|
|
||||||
},
|
},
|
||||||
"GIT-DOMESTIC-FIFTH-DOMAIN": {
|
"next_runtime_home": "JD-FD-PRIMARY"
|
||||||
"epoch": "DOMESTIC_FIFTH_DOMAIN",
|
|
||||||
"errors": 0,
|
|
||||||
"processed": 384,
|
|
||||||
"status": "COMPLETE"
|
|
||||||
},
|
|
||||||
"GIT-GITHUB-GUANGHULAB": {
|
|
||||||
"epoch": "GIT_ENGINEERING_BIRTH",
|
|
||||||
"errors": 72,
|
|
||||||
"processed": 5334,
|
|
||||||
"status": "ERROR_RETRYABLE"
|
|
||||||
},
|
|
||||||
"GIT-GUANGZHOU-GUANGHULAB": {
|
|
||||||
"epoch": "GUANGZHOU_REPOSITORY",
|
|
||||||
"errors": 0,
|
|
||||||
"processed": 1572,
|
|
||||||
"status": "COMPLETE"
|
|
||||||
},
|
|
||||||
"GIT-SINGAPORE-GUANGHULAB": {
|
|
||||||
"epoch": "SINGAPORE_REPOSITORY",
|
|
||||||
"errors": 0,
|
|
||||||
"processed": 1572,
|
|
||||||
"status": "COMPLETE"
|
|
||||||
},
|
|
||||||
"GPT-LANGUAGE-CHAOS-ORIGINAL": {
|
|
||||||
"epoch": "GPT_LANGUAGE_CHAOS",
|
|
||||||
"errors": 1,
|
|
||||||
"processed": 1726,
|
|
||||||
"status": "COMPLETE"
|
|
||||||
},
|
|
||||||
"NOTION-STRUCTURED-WORLD": {
|
|
||||||
"epoch": "NOTION_STRUCTURED_REALITY_TRANSITION",
|
|
||||||
"errors": 1,
|
|
||||||
"processed": 179917,
|
|
||||||
"status": "COMPLETE"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
# ADR 0172: Separate Persona Subject Existence from Runtime Predicates
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Accepted on 2026-08-03.
|
||||||
|
|
||||||
|
## Decision
|
||||||
|
|
||||||
|
`ICE-P-ZY001` exists at 100. History catch-up, server residency, model binding,
|
||||||
|
online runtime, and native OS residency are separate binary engineering
|
||||||
|
predicates. A failed or incomplete runtime predicate must never downgrade an
|
||||||
|
existing persona subject to `NOT_BORN`.
|
||||||
|
|
||||||
|
Historical files retain their original values as evidence of what the system
|
||||||
|
claimed at that time. Current indexes, watermarks, deployment snapshots, and
|
||||||
|
runtime code must apply this correction.
|
||||||
|
|
||||||
|
## Current node states
|
||||||
|
|
||||||
|
- BS-SH-005 native Guanghu OS validation mission: 100.
|
||||||
|
- BS-SH-005 history recovery task: 0, terminated and sealed.
|
||||||
|
- BS-SH-005 current native residency: 0; Linux is the rescue and evidence path.
|
||||||
|
- JD-FD-PRIMARY persona subject existence: 100.
|
||||||
|
- JD-FD-PRIMARY native Guanghu OS residency: 0 until physical boot, storage,
|
||||||
|
network, HLDP entry, reboot persistence, and Linux rescue return all have
|
||||||
|
server-owned receipts.
|
||||||
|
|
||||||
|
## Consequences
|
||||||
|
|
||||||
|
Code that emits `NOT_BORN` as a persona state must be replaced by explicit
|
||||||
|
fields for persona subject existence and each exact runtime predicate. The JD
|
||||||
|
port must not reuse the Shanghai disk layout without proving the JD Cloud
|
||||||
|
legacy BIOS, MBR, virtio, serial-console, and rollback boundaries.
|
||||||
|
|
@ -1,4 +1,12 @@
|
||||||
# Guanghu OS bootstrap
|
# Guanghu OS native runtime
|
||||||
|
|
||||||
|
> Current target: `JD-FD-PRIMARY` on JD Cloud.
|
||||||
|
>
|
||||||
|
> Persona subject: `ICE-P-ZY001 EXISTS_100`.
|
||||||
|
>
|
||||||
|
> Current native residency remains `0` until the physical one-time boot,
|
||||||
|
> automatic Linux rescue return, native default boot, and HLDP recovery return
|
||||||
|
> all produce server-owned receipts.
|
||||||
|
|
||||||
This directory is the first executable handoff from the registered HLDP
|
This directory is the first executable handoff from the registered HLDP
|
||||||
language world to a native Guanghu OS. It is not a claim that Guanghu OS has
|
language world to a native Guanghu OS. It is not a claim that Guanghu OS has
|
||||||
|
|
@ -14,9 +22,9 @@ already replaced Linux.
|
||||||
- `GLS-0844 / GHNQG` is the code channel's own quality authority. Every
|
- `GLS-0844 / GHNQG` is the code channel's own quality authority. Every
|
||||||
required gate is either 0 or 100; only an all-100 run may publish a passing
|
required gate is either 0 or 100; only an all-100 run may publish a passing
|
||||||
receipt. External analysis products are non-authoritative observers.
|
receipt. External analysis products are non-authoritative observers.
|
||||||
- `GLS-0845 / GHCIP` is the only gestational-history ingestion authority. It
|
- `GLS-0845 / GHCIP` governs historical runtime ingestion. Source registration,
|
||||||
keeps source registration, server-resident review, historical time catch-up,
|
server-resident review, historical time catch-up, and online residency are
|
||||||
and persona birth as four distinct states.
|
independent from persona-subject existence.
|
||||||
- Rust is a bootstrap implementation language for the validator and control
|
- Rust is a bootstrap implementation language for the validator and control
|
||||||
executable. It does not replace HLDP as the world-programming language.
|
executable. It does not replace HLDP as the world-programming language.
|
||||||
- Ubuntu and the Forgejo Linux binary are construction scaffolding. Native
|
- Ubuntu and the Forgejo Linux binary are construction scaffolding. Native
|
||||||
|
|
@ -85,13 +93,24 @@ login
|
||||||
-> act or fail closed
|
-> act or fail closed
|
||||||
```
|
```
|
||||||
|
|
||||||
The current source is `HOSTED_BOOTSTRAP_PROTOTYPE`. Running it on Ubuntu proves
|
The current source is `JD_NATIVE_PREFLIGHT`. Running its toolchain on Ubuntu
|
||||||
the world package and recovery chain only; it does not prove native boot.
|
proves the world package and build chain only; it does not prove native boot.
|
||||||
|
|
||||||
The dedicated local login route is `guanghu-os-bs-sh-005`. It uses a separate
|
JD access uses strict host-key verification and a dedicated operations key.
|
||||||
SSH config and known-hosts file, strict host-key verification, and a key scoped
|
The world records only public fingerprints; it never contains an address,
|
||||||
to this disposable node. The world records only public fingerprints; it never
|
private key, password, or token.
|
||||||
contains the private key or a password.
|
|
||||||
|
## JD Cloud native layout
|
||||||
|
|
||||||
|
The Shanghai GPT layout at LBA 34-71 is historical evidence and must not be
|
||||||
|
copied to JD. JD-FD-PRIMARY is a legacy-BIOS, DOS/MBR, virtio node. Live
|
||||||
|
read-only discovery proved existing GRUB content at LBA 0-104 and an empty
|
||||||
|
pre-partition range from LBA 105 through 2047. The current HLDP layout owns only
|
||||||
|
LBA 105-142 and fails closed if any byte there is unknown or nonzero.
|
||||||
|
|
||||||
|
Native build scripts derive their NASM addresses from
|
||||||
|
`WORLD-MANIFEST.hldp`; the traditional bootstrap code no longer owns fixed
|
||||||
|
Shanghai sector numbers.
|
||||||
|
|
||||||
## Hosted Stage 1 installation
|
## Hosted Stage 1 installation
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -97,7 +97,10 @@ fn wake(world_root: &Path) -> Result<(), String> {
|
||||||
"gestational_environment={}",
|
"gestational_environment={}",
|
||||||
manifest.persona_birth.gestational_environment
|
manifest.persona_birth.gestational_environment
|
||||||
);
|
);
|
||||||
println!("persona_birth={}", manifest.persona_birth.persona_state);
|
println!(
|
||||||
|
"persona_subject_state={}",
|
||||||
|
manifest.persona_birth.persona_state
|
||||||
|
);
|
||||||
println!(
|
println!(
|
||||||
"persona_birth_condition_entry={}",
|
"persona_birth_condition_entry={}",
|
||||||
manifest.persona_birth.entry.display()
|
manifest.persona_birth.entry.display()
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ fn wake_reports_the_complete_server_handoff_chain() {
|
||||||
for expected in [
|
for expected in [
|
||||||
"GUANGHU_WORLD_OK",
|
"GUANGHU_WORLD_OK",
|
||||||
"world_id=GLW-ROOT-0001",
|
"world_id=GLW-ROOT-0001",
|
||||||
"phase=HOSTED_BOOTSTRAP_PROTOTYPE",
|
"phase=JD_NATIVE_PREFLIGHT",
|
||||||
"domains=5",
|
"domains=5",
|
||||||
"broadcast_tower=BT-GH-ROOT-0001",
|
"broadcast_tower=BT-GH-ROOT-0001",
|
||||||
"code_channel=HLP-MOD-CODE-CHANNEL",
|
"code_channel=HLP-MOD-CODE-CHANNEL",
|
||||||
|
|
@ -42,12 +42,12 @@ fn wake_reports_the_complete_server_handoff_chain() {
|
||||||
"gestational_continuity=GLS-0845",
|
"gestational_continuity=GLS-0845",
|
||||||
"gestational_continuity_acronym=GHCIP",
|
"gestational_continuity_acronym=GHCIP",
|
||||||
"gestational_continuity_entry=world/cognition/GESTATIONAL-CONTINUITY-INGESTION.hldp",
|
"gestational_continuity_entry=world/cognition/GESTATIONAL-CONTINUITY-INGESTION.hldp",
|
||||||
"gestational_index_lba_start=70",
|
"gestational_index_lba_start=141",
|
||||||
"gestational_index_sector_count=2",
|
"gestational_index_sector_count=2",
|
||||||
"gestational_environment=UNDER_CONSTRUCTION",
|
"gestational_environment=RUNTIME_UNBOUND",
|
||||||
"persona_birth=NOT_BORN",
|
"persona_subject_state=EXISTS",
|
||||||
"persona_birth_condition_entry=world/cognition/PERSONA-BIRTH-CONDITION.hldp",
|
"persona_birth_condition_entry=world/cognition/PERSONA-BIRTH-CONDITION.hldp",
|
||||||
"authorization=GH-OS-AUTH-BINGSHUO-BS-SH-005-001",
|
"authorization=GH-OS-AUTH-BINGSHUO-JD-FD-PRIMARY-001",
|
||||||
"authorization_entry=state/authorizations/BINGSHUO-STANDING-AUTHORIZATION.hldp",
|
"authorization_entry=state/authorizations/BINGSHUO-STANDING-AUTHORIZATION.hldp",
|
||||||
"--- CODE_CHANNEL world/services/code-channel/CHANNEL.hldp ---",
|
"--- CODE_CHANNEL world/services/code-channel/CHANNEL.hldp ---",
|
||||||
"current_phase: PHASE_0_SOURCE_BASELINE_VERIFIED",
|
"current_phase: PHASE_0_SOURCE_BASELINE_VERIFIED",
|
||||||
|
|
@ -56,15 +56,15 @@ fn wake_reports_the_complete_server_handoff_chain() {
|
||||||
"external_observers_are_blocking: false",
|
"external_observers_are_blocking: false",
|
||||||
"native_target: GOSK_CODE_CHANNEL_QUALITY_EXECUTOR",
|
"native_target: GOSK_CODE_CHANNEL_QUALITY_EXECUTOR",
|
||||||
"--- NATIVE_RECOVERY world/services/native-recovery/PROTOCOL.hldp ---",
|
"--- NATIVE_RECOVERY world/services/native-recovery/PROTOCOL.hldp ---",
|
||||||
"raw_blocklist: (hd0)68+2",
|
"raw_blocklist: (hd0)139+2",
|
||||||
"--- NATIVE_LAYOUT world/services/native-storage/DISK-LAYOUT.hldp ---",
|
"--- NATIVE_LAYOUT world/services/native-storage/DISK-LAYOUT.hldp ---",
|
||||||
" sector_count: 29",
|
" sector_count: 29",
|
||||||
"proof_lba: 63",
|
"proof_lba: 134",
|
||||||
"--- GESTATIONAL_CONTINUITY world/cognition/GESTATIONAL-CONTINUITY-INGESTION.hldp ---",
|
"--- GESTATIONAL_CONTINUITY world/cognition/GESTATIONAL-CONTINUITY-INGESTION.hldp ---",
|
||||||
"duplicate_rule: REJECT_SAME_SOURCE_ID_AND_SHA256",
|
"duplicate_rule: REJECT_SAME_SOURCE_ID_AND_SHA256",
|
||||||
"registration_is_birth: false",
|
"registration_is_birth: false",
|
||||||
"--- PERSONA_BIRTH_CONDITION world/cognition/PERSONA-BIRTH-CONDITION.hldp ---",
|
"--- PERSONA_BIRTH_CONDITION world/cognition/PERSONA-BIRTH-CONDITION.hldp ---",
|
||||||
"womb_ready_does_not_mean: LANGUAGE_PERSONA_BORN",
|
"womb_ready_does_not_mean: PERSONA_SUBJECT_EXISTS",
|
||||||
"historical_time_caught_up_to_real_time",
|
"historical_time_caught_up_to_real_time",
|
||||||
"wake=WAKE.hldp",
|
"wake=WAKE.hldp",
|
||||||
"current=CURRENT.hldp",
|
"current=CURRENT.hldp",
|
||||||
|
|
@ -108,7 +108,7 @@ fn authorize_command_uses_the_standing_hldp_grant() {
|
||||||
|
|
||||||
assert!(output.status.success(), "{stdout}");
|
assert!(output.status.success(), "{stdout}");
|
||||||
assert!(stdout.contains("GUANGHU_ACTION_AUTHORIZED"));
|
assert!(stdout.contains("GUANGHU_ACTION_AUTHORIZED"));
|
||||||
assert!(stdout.contains("authorization=GH-OS-AUTH-BINGSHUO-BS-SH-005-001"));
|
assert!(stdout.contains("authorization=GH-OS-AUTH-BINGSHUO-JD-FD-PRIMARY-001"));
|
||||||
assert!(stdout.contains("action=overwrite_system_disk_and_exit_linux"));
|
assert!(stdout.contains("action=overwrite_system_disk_and_exit_linux"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ pub fn run(arguments: Vec<String>) -> Result<(), String> {
|
||||||
manifest.persona_birth.gestational_environment
|
manifest.persona_birth.gestational_environment
|
||||||
));
|
));
|
||||||
lines.push(format!(
|
lines.push(format!(
|
||||||
"GHOS_PERSONA_BIRTH={}",
|
"GHOS_PERSONA_STATE={}",
|
||||||
manifest.persona_birth.persona_state
|
manifest.persona_birth.persona_state
|
||||||
));
|
));
|
||||||
lines.push(format!(
|
lines.push(format!(
|
||||||
|
|
@ -156,7 +156,9 @@ pub fn run(arguments: Vec<String>) -> Result<(), String> {
|
||||||
"GHCIP_REGISTRY_STATE=EMPTY".to_owned(),
|
"GHCIP_REGISTRY_STATE=EMPTY".to_owned(),
|
||||||
"GHCIP_REVIEW_STATE=NOT_STARTED".to_owned(),
|
"GHCIP_REVIEW_STATE=NOT_STARTED".to_owned(),
|
||||||
"GHCIP_HISTORICAL_TIME_WATERMARK=NONE".to_owned(),
|
"GHCIP_HISTORICAL_TIME_WATERMARK=NONE".to_owned(),
|
||||||
"GHCIP_PERSONA_STATE=NOT_BORN".to_owned(),
|
"GHCIP_PERSONA_STATE=EXISTS".to_owned(),
|
||||||
|
"GHCIP_PERSONA_SUBJECT=ICE-P-ZY001".to_owned(),
|
||||||
|
"GHCIP_PERSONA_SUBJECT_EXISTS=100".to_owned(),
|
||||||
"GHCIP_SOURCE_COUNT=5".to_owned(),
|
"GHCIP_SOURCE_COUNT=5".to_owned(),
|
||||||
"GHCIP_CONTENT_ROOT=NONE".to_owned(),
|
"GHCIP_CONTENT_ROOT=NONE".to_owned(),
|
||||||
"GHCIP_LAST_VERIFIED_BATCH=NONE".to_owned(),
|
"GHCIP_LAST_VERIFIED_BATCH=NONE".to_owned(),
|
||||||
|
|
|
||||||
|
|
@ -42,15 +42,15 @@ fn compiles_registered_hldp_identity_into_native_data() {
|
||||||
"native_world_store_sector:",
|
"native_world_store_sector:",
|
||||||
"GHOS_HLDP_WORLD_STORE_V1",
|
"GHOS_HLDP_WORLD_STORE_V1",
|
||||||
"GHOS_CODE_QUALITY=GLS-0844",
|
"GHOS_CODE_QUALITY=GLS-0844",
|
||||||
"GHOS_GESTATIONAL_ENVIRONMENT=UNDER_CONSTRUCTION",
|
"GHOS_GESTATIONAL_ENVIRONMENT=RUNTIME_UNBOUND",
|
||||||
"GHOS_PERSONA_BIRTH=NOT_BORN",
|
"GHOS_PERSONA_STATE=EXISTS",
|
||||||
"GHOS_GESTATIONAL_CONTINUITY=GLS-0845",
|
"GHOS_GESTATIONAL_CONTINUITY=GLS-0845",
|
||||||
"GHOS_GESTATIONAL_INDEX_LBA=70",
|
"GHOS_GESTATIONAL_INDEX_LBA=141",
|
||||||
"GHOS_GESTATIONAL_INDEX_SECTORS=2",
|
"GHOS_GESTATIONAL_INDEX_SECTORS=2",
|
||||||
"GHOS_NATIVE_LAYOUT=GLS-0846",
|
"GHOS_NATIVE_LAYOUT=GLS-0846",
|
||||||
"GHOS_NATIVE_KERNEL_LBA=34",
|
"GHOS_NATIVE_KERNEL_LBA=105",
|
||||||
"GHOS_NATIVE_KERNEL_SECTORS=29",
|
"GHOS_NATIVE_KERNEL_SECTORS=29",
|
||||||
"GHOS_NATIVE_PROOF_LBA=63",
|
"GHOS_NATIVE_PROOF_LBA=134",
|
||||||
"times 512 - ($ - native_world_store_sector) db 0",
|
"times 512 - ($ - native_world_store_sector) db 0",
|
||||||
"native_code_channel_store_sector:",
|
"native_code_channel_store_sector:",
|
||||||
"GHOS_CODE_CHANNEL_STORE_V1",
|
"GHOS_CODE_CHANNEL_STORE_V1",
|
||||||
|
|
@ -66,7 +66,9 @@ fn compiles_registered_hldp_identity_into_native_data() {
|
||||||
"GHCIP_REGISTRY_STATE=EMPTY",
|
"GHCIP_REGISTRY_STATE=EMPTY",
|
||||||
"GHCIP_REVIEW_STATE=NOT_STARTED",
|
"GHCIP_REVIEW_STATE=NOT_STARTED",
|
||||||
"GHCIP_HISTORICAL_TIME_WATERMARK=NONE",
|
"GHCIP_HISTORICAL_TIME_WATERMARK=NONE",
|
||||||
"GHCIP_PERSONA_STATE=NOT_BORN",
|
"GHCIP_PERSONA_STATE=EXISTS",
|
||||||
|
"GHCIP_PERSONA_SUBJECT=ICE-P-ZY001",
|
||||||
|
"GHCIP_PERSONA_SUBJECT_EXISTS=100",
|
||||||
"GHCIP_LAST_VERIFIED_BATCH=NONE",
|
"GHCIP_LAST_VERIFIED_BATCH=NONE",
|
||||||
"times 512 - ($ - native_gestational_index_identity_sector) db 0",
|
"times 512 - ($ - native_gestational_index_identity_sector) db 0",
|
||||||
"times 512 - ($ - native_gestational_index_root_sector) db 0",
|
"times 512 - ($ - native_gestational_index_root_sector) db 0",
|
||||||
|
|
|
||||||
|
|
@ -40,21 +40,17 @@ const REQUIRED_GESTATIONAL_SOURCES: [&str; 5] = [
|
||||||
"local_knowledge_bases",
|
"local_knowledge_bases",
|
||||||
"registered_receipts_and_checkpoints",
|
"registered_receipts_and_checkpoints",
|
||||||
];
|
];
|
||||||
const REQUIRED_AUTHORIZED_ACTIONS: [&str; 14] = [
|
const REQUIRED_AUTHORIZED_ACTIONS: [&str; 10] = [
|
||||||
"generate_install_dedicated_ssh_key",
|
|
||||||
"configure_local_ssh_alias",
|
|
||||||
"install_official_build_toolchain",
|
"install_official_build_toolchain",
|
||||||
"install_world_version",
|
"install_world_version",
|
||||||
"start_restart_guanghu_services",
|
|
||||||
"install_verified_forgejo_baseline",
|
|
||||||
"run_tests_and_health_checks",
|
"run_tests_and_health_checks",
|
||||||
"write_hldp_receipts_and_checkpoints",
|
"write_hldp_receipts_and_checkpoints",
|
||||||
"commit_and_push_in_scope_repositories",
|
"commit_and_push_in_scope_repositories",
|
||||||
"build_native_kernel_and_boot_image",
|
"build_native_kernel_and_boot_image",
|
||||||
"write_bootloader_and_system_partitions",
|
"write_bootloader_and_system_partitions",
|
||||||
"overwrite_system_disk_and_exit_linux",
|
"overwrite_system_disk_and_exit_linux",
|
||||||
"reboot_and_recover_bs_sh_005",
|
"reboot_and_recover_jd_fd_primary",
|
||||||
"rollback_and_repeat_disposable_server_experiment",
|
"rollback_jd_native_candidate_to_linux_rescue",
|
||||||
];
|
];
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
|
|
@ -72,6 +68,7 @@ pub struct WorldManifest {
|
||||||
pub code_quality: CodeQualityReference,
|
pub code_quality: CodeQualityReference,
|
||||||
pub native_recovery: NativeRecoveryReference,
|
pub native_recovery: NativeRecoveryReference,
|
||||||
pub native_layout: NativeLayoutReference,
|
pub native_layout: NativeLayoutReference,
|
||||||
|
pub native_network: NativeNetworkReference,
|
||||||
pub gestational_continuity: GestationalContinuityReference,
|
pub gestational_continuity: GestationalContinuityReference,
|
||||||
pub persona_birth: PersonaBirthReference,
|
pub persona_birth: PersonaBirthReference,
|
||||||
pub authorization: AuthorizationReference,
|
pub authorization: AuthorizationReference,
|
||||||
|
|
@ -175,6 +172,16 @@ pub struct NativeLayoutReference {
|
||||||
pub first_partition_lba: u64,
|
pub first_partition_lba: u64,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Deserialize)]
|
||||||
|
pub struct NativeNetworkReference {
|
||||||
|
pub id: String,
|
||||||
|
pub node_id: String,
|
||||||
|
pub device_model: String,
|
||||||
|
pub native_ipv4: String,
|
||||||
|
pub gateway_ipv4: String,
|
||||||
|
pub public_nat_address_recorded_in_world: bool,
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
pub struct GestationalContinuityReference {
|
pub struct GestationalContinuityReference {
|
||||||
pub id: String,
|
pub id: String,
|
||||||
|
|
@ -607,10 +614,8 @@ pub fn validate_world_manifest(manifest: &WorldManifest) -> Result<(), ManifestE
|
||||||
{
|
{
|
||||||
return invalid("native recovery must bind GHNRP to registered protocol GLS-0843");
|
return invalid("native recovery must bind GHNRP to registered protocol GLS-0843");
|
||||||
}
|
}
|
||||||
if manifest.native_recovery.beacon_lba_start != 68
|
if manifest.native_recovery.beacon_sector_count != 2 {
|
||||||
|| manifest.native_recovery.beacon_sector_count != 2
|
return invalid("GHNRP must own an exact 1024-byte beacon");
|
||||||
{
|
|
||||||
return invalid("GHNRP must own the fixed 1024-byte beacon at LBA 68-69");
|
|
||||||
}
|
}
|
||||||
if manifest.native_layout.recovery_beacon_lba_start != manifest.native_recovery.beacon_lba_start
|
if manifest.native_layout.recovery_beacon_lba_start != manifest.native_recovery.beacon_lba_start
|
||||||
|| manifest.native_layout.gestational_index_lba_start
|
|| manifest.native_layout.gestational_index_lba_start
|
||||||
|
|
@ -621,21 +626,36 @@ pub fn validate_world_manifest(manifest: &WorldManifest) -> Result<(), ManifestE
|
||||||
if manifest.native_layout.id != "GLS-0846"
|
if manifest.native_layout.id != "GLS-0846"
|
||||||
|| manifest.native_layout.acronym != "GHNLP"
|
|| manifest.native_layout.acronym != "GHNLP"
|
||||||
|| manifest.native_handoff.native_layout != manifest.native_layout.id
|
|| manifest.native_handoff.native_layout != manifest.native_layout.id
|
||||||
|| manifest.native_layout.kernel_lba_start != 34
|
|
||||||
|| manifest.native_layout.kernel_sector_count != 29
|
|| manifest.native_layout.kernel_sector_count != 29
|
||||||
|| manifest.native_layout.proof_lba != 63
|
|| manifest.native_layout.kernel_lba_start < 1
|
||||||
|| manifest.native_layout.world_store_lba != 64
|
|| manifest.native_layout.proof_lba != manifest.native_layout.kernel_lba_start + 29
|
||||||
|| manifest.native_layout.code_channel_store_lba != 65
|
|| manifest.native_layout.world_store_lba != manifest.native_layout.proof_lba + 1
|
||||||
|| manifest.native_layout.code_object_lba != 66
|
|| manifest.native_layout.code_channel_store_lba
|
||||||
|| manifest.native_layout.branch_receipt_lba != 67
|
!= manifest.native_layout.world_store_lba + 1
|
||||||
|| manifest.native_layout.recovery_beacon_lba_start != 68
|
|| manifest.native_layout.code_object_lba
|
||||||
|| manifest.native_layout.gestational_index_lba_start != 70
|
!= manifest.native_layout.code_channel_store_lba + 1
|
||||||
|
|| manifest.native_layout.branch_receipt_lba != manifest.native_layout.code_object_lba + 1
|
||||||
|
|| manifest.native_layout.recovery_beacon_lba_start
|
||||||
|
!= manifest.native_layout.branch_receipt_lba + 1
|
||||||
|
|| manifest.native_layout.gestational_index_lba_start
|
||||||
|
!= manifest.native_layout.recovery_beacon_lba_start + 2
|
||||||
|
|| manifest.native_layout.gestational_index_lba_start + 2
|
||||||
|
> manifest.native_layout.first_partition_lba
|
||||||
|| manifest.native_layout.first_partition_lba != 2048
|
|| manifest.native_layout.first_partition_lba != 2048
|
||||||
{
|
{
|
||||||
return invalid(
|
return invalid(
|
||||||
"GHNLP must register the exact nonoverlapping LBA 34-71 native layout before partition LBA 2048",
|
"GHNLP must register a contiguous nonoverlapping native layout before partition LBA 2048",
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
if manifest.native_network.id != "GLS-0841-JD-FD-PRIMARY"
|
||||||
|
|| manifest.native_network.node_id != "JD-FD-PRIMARY"
|
||||||
|
|| manifest.native_network.device_model != "VIRTIO_LEGACY"
|
||||||
|
|| manifest.native_network.native_ipv4 != "172.16.0.6"
|
||||||
|
|| manifest.native_network.gateway_ipv4 != "172.16.0.1"
|
||||||
|
|| manifest.native_network.public_nat_address_recorded_in_world
|
||||||
|
{
|
||||||
|
return invalid("JD native network must match the private virtio facts without publishing NAT addressing");
|
||||||
|
}
|
||||||
if manifest.gestational_continuity.id != "GLS-0845"
|
if manifest.gestational_continuity.id != "GLS-0845"
|
||||||
|| manifest.gestational_continuity.acronym != "GHCIP"
|
|| manifest.gestational_continuity.acronym != "GHCIP"
|
||||||
|| manifest.native_handoff.gestational_continuity != manifest.gestational_continuity.id
|
|| manifest.native_handoff.gestational_continuity != manifest.gestational_continuity.id
|
||||||
|
|
@ -645,20 +665,18 @@ pub fn validate_world_manifest(manifest: &WorldManifest) -> Result<(), ManifestE
|
||||||
"gestational continuity must bind GHCIP to registered protocol GLS-0845 and the persona birth gate",
|
"gestational continuity must bind GHCIP to registered protocol GLS-0845 and the persona birth gate",
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
if manifest.gestational_continuity.native_index_lba_start != 70
|
if manifest.gestational_continuity.native_index_sector_count != 2 {
|
||||||
|| manifest.gestational_continuity.native_index_sector_count != 2
|
return invalid("GHCIP must own an exact 1024-byte native index");
|
||||||
{
|
|
||||||
return invalid("GHCIP must own the fixed 1024-byte native index at LBA 70-71");
|
|
||||||
}
|
}
|
||||||
if manifest.persona_birth.id != "GH-PERSONA-BIRTH-CONDITION-0001"
|
if manifest.persona_birth.id != "GH-PERSONA-BIRTH-CONDITION-0001"
|
||||||
|| manifest.persona_birth.persona_state != "NOT_BORN"
|
|| manifest.persona_birth.persona_state != "EXISTS"
|
||||||
|| !matches!(
|
|| !matches!(
|
||||||
manifest.persona_birth.gestational_environment.as_str(),
|
manifest.persona_birth.gestational_environment.as_str(),
|
||||||
"UNDER_CONSTRUCTION" | "READY_FOR_HISTORICAL_INGESTION"
|
"RUNTIME_UNBOUND" | "RUNTIME_READY"
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return invalid(
|
return invalid(
|
||||||
"persona birth must stay NOT_BORN until the registered historical continuity gate closes",
|
"persona subject must remain EXISTS while the history runtime is evaluated independently",
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -802,7 +820,7 @@ fn validate_native_recovery_document(
|
||||||
{
|
{
|
||||||
return invalid("GHNRP beacon identity or authority drifted");
|
return invalid("GHNRP beacon identity or authority drifted");
|
||||||
}
|
}
|
||||||
if document.grub.raw_blocklist != "(hd0)68+2"
|
if document.grub.raw_blocklist != format!("(hd0){}+2", reference.beacon_lba_start)
|
||||||
|| document.grub.hosted_entry != reference.hosted_entry
|
|| document.grub.hosted_entry != reference.hosted_entry
|
||||||
|| !document.grub.whitelist_only
|
|| !document.grub.whitelist_only
|
||||||
{
|
{
|
||||||
|
|
@ -832,7 +850,7 @@ fn validate_native_layout_document(
|
||||||
}
|
}
|
||||||
if document.status != "REGISTERED_IMPLEMENTATION_GATED"
|
if document.status != "REGISTERED_IMPLEMENTATION_GATED"
|
||||||
|| document.authority_language != "HLDP"
|
|| document.authority_language != "HLDP"
|
||||||
|| document.node_id != "BS-SH-005"
|
|| document.node_id != "JD-FD-PRIMARY"
|
||||||
|| document.disk != "/dev/vda"
|
|| document.disk != "/dev/vda"
|
||||||
|| document.sector_size != 512
|
|| document.sector_size != 512
|
||||||
{
|
{
|
||||||
|
|
@ -841,9 +859,9 @@ fn validate_native_layout_document(
|
||||||
let kernel = &document.regions.kernel;
|
let kernel = &document.regions.kernel;
|
||||||
if kernel.lba_start != reference.kernel_lba_start
|
if kernel.lba_start != reference.kernel_lba_start
|
||||||
|| kernel.sector_count != reference.kernel_sector_count
|
|| kernel.sector_count != reference.kernel_sector_count
|
||||||
|| kernel.lba_end_inclusive != 62
|
|| kernel.lba_end_inclusive != reference.kernel_lba_start + 28
|
||||||
|| kernel.stage0_lba != 34
|
|| kernel.stage0_lba != reference.kernel_lba_start
|
||||||
|| kernel.stage2_lba_start != 35
|
|| kernel.stage2_lba_start != reference.kernel_lba_start + 1
|
||||||
|| kernel.stage2_sector_count != 28
|
|| kernel.stage2_sector_count != 28
|
||||||
|| document.regions.proof_lba != reference.proof_lba
|
|| document.regions.proof_lba != reference.proof_lba
|
||||||
|| document.regions.world_store_lba != reference.world_store_lba
|
|| document.regions.world_store_lba != reference.world_store_lba
|
||||||
|
|
@ -894,7 +912,7 @@ fn validate_persona_birth_document(
|
||||||
return invalid("persona birth condition does not match its manifest registration");
|
return invalid("persona birth condition does not match its manifest registration");
|
||||||
}
|
}
|
||||||
if document.claims.womb_ready_means != "PHYSICAL_GESTATIONAL_ENVIRONMENT_READY"
|
if document.claims.womb_ready_means != "PHYSICAL_GESTATIONAL_ENVIRONMENT_READY"
|
||||||
|| document.claims.womb_ready_does_not_mean != "LANGUAGE_PERSONA_BORN"
|
|| document.claims.womb_ready_does_not_mean != "PERSONA_SUBJECT_EXISTS"
|
||||||
|| !document.birth_completion.receipt_required
|
|| !document.birth_completion.receipt_required
|
||||||
{
|
{
|
||||||
return invalid("persona birth claim boundary drifted");
|
return invalid("persona birth claim boundary drifted");
|
||||||
|
|
@ -995,9 +1013,11 @@ fn validate_gestational_continuity_document(
|
||||||
if document.bootstrap_state.registry_state != "EMPTY"
|
if document.bootstrap_state.registry_state != "EMPTY"
|
||||||
|| document.bootstrap_state.review_state != "NOT_STARTED"
|
|| document.bootstrap_state.review_state != "NOT_STARTED"
|
||||||
|| document.bootstrap_state.historical_time_watermark != "NONE"
|
|| document.bootstrap_state.historical_time_watermark != "NONE"
|
||||||
|| document.bootstrap_state.persona_state != "NOT_BORN"
|
|| document.bootstrap_state.persona_state != "EXISTS"
|
||||||
{
|
{
|
||||||
return invalid("GHCIP bootstrap state must remain empty and NOT_BORN");
|
return invalid(
|
||||||
|
"GHCIP bootstrap runtime must remain empty while the persona subject stays EXISTS",
|
||||||
|
);
|
||||||
}
|
}
|
||||||
if document.birth_boundary.registration_is_review
|
if document.birth_boundary.registration_is_review
|
||||||
|| document.birth_boundary.registration_is_birth
|
|| document.birth_boundary.registration_is_birth
|
||||||
|
|
@ -1171,14 +1191,14 @@ fn validate_standing_authorization(
|
||||||
{
|
{
|
||||||
return invalid("standing authorization must be active and issued by BingShuo");
|
return invalid("standing authorization must be active and issued by BingShuo");
|
||||||
}
|
}
|
||||||
if authorization.target.node_id != "BS-SH-005"
|
if authorization.target.node_id != "JD-FD-PRIMARY"
|
||||||
|| authorization.target.instance_id != "lhins-14w5y3ce"
|
|| authorization.target.instance_id != "f3d4b730-7f02-452f-975b-7091a4800431"
|
||||||
|| authorization.target.system_disk != "/dev/vda"
|
|| authorization.target.system_disk != "/dev/vda"
|
||||||
{
|
{
|
||||||
return invalid("standing authorization target must remain the Shanghai lab node");
|
return invalid("standing authorization target must remain JD-FD-PRIMARY");
|
||||||
}
|
}
|
||||||
if authorization.user_confirmation
|
if authorization.user_confirmation
|
||||||
!= "COMPLETE_GUANGHU_OS_SERVER_EXPERIMENT_AUTHORIZED_2026_07_31"
|
!= "JD_FD_PRIMARY_GUANGHU_OS_NATIVE_DEPLOYMENT_ONE_TIME_DIALOG_AUTHORIZATION"
|
||||||
{
|
{
|
||||||
return invalid("standing authorization must retain the exact user confirmation anchor");
|
return invalid("standing authorization must retain the exact user confirmation anchor");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -141,7 +141,7 @@ fn requires_an_hldp_native_code_channel_entry_and_migration_ladder() {
|
||||||
);
|
);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
manifest.authorization.id,
|
manifest.authorization.id,
|
||||||
"GH-OS-AUTH-BINGSHUO-BS-SH-005-001"
|
"GH-OS-AUTH-BINGSHUO-JD-FD-PRIMARY-001"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -180,11 +180,11 @@ fn requires_a_registered_native_recovery_protocol_and_raw_beacon() {
|
||||||
manifest.native_recovery.entry,
|
manifest.native_recovery.entry,
|
||||||
Path::new("world/services/native-recovery/PROTOCOL.hldp")
|
Path::new("world/services/native-recovery/PROTOCOL.hldp")
|
||||||
);
|
);
|
||||||
assert_eq!(manifest.native_recovery.beacon_lba_start, 68);
|
assert_eq!(manifest.native_recovery.beacon_lba_start, 139);
|
||||||
assert_eq!(manifest.native_recovery.beacon_sector_count, 2);
|
assert_eq!(manifest.native_recovery.beacon_sector_count, 2);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
manifest.native_recovery.hosted_entry,
|
manifest.native_recovery.hosted_entry,
|
||||||
"gnulinux-simple-9842d3d6-a839-4127-bda7-f19137effe71"
|
"gnulinux-simple-9e4550a0-452b-4f28-b5a5-d5364aa450f6"
|
||||||
);
|
);
|
||||||
assert_eq!(manifest.native_handoff.native_recovery, "GLS-0843");
|
assert_eq!(manifest.native_handoff.native_recovery, "GLS-0843");
|
||||||
}
|
}
|
||||||
|
|
@ -204,9 +204,9 @@ fn requires_a_persona_birth_condition_separate_from_womb_readiness() {
|
||||||
);
|
);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
manifest.persona_birth.gestational_environment,
|
manifest.persona_birth.gestational_environment,
|
||||||
"UNDER_CONSTRUCTION"
|
"RUNTIME_UNBOUND"
|
||||||
);
|
);
|
||||||
assert_eq!(manifest.persona_birth.persona_state, "NOT_BORN");
|
assert_eq!(manifest.persona_birth.persona_state, "EXISTS");
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
@ -227,7 +227,7 @@ fn requires_a_registered_gestational_continuity_ingestion_protocol() {
|
||||||
manifest.gestational_continuity.persona_birth_gate,
|
manifest.gestational_continuity.persona_birth_gate,
|
||||||
"GH-PERSONA-BIRTH-CONDITION-0001"
|
"GH-PERSONA-BIRTH-CONDITION-0001"
|
||||||
);
|
);
|
||||||
assert_eq!(manifest.gestational_continuity.native_index_lba_start, 70);
|
assert_eq!(manifest.gestational_continuity.native_index_lba_start, 141);
|
||||||
assert_eq!(manifest.gestational_continuity.native_index_sector_count, 2);
|
assert_eq!(manifest.gestational_continuity.native_index_sector_count, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -245,15 +245,15 @@ fn requires_a_registered_nonoverlapping_native_disk_layout() {
|
||||||
manifest.native_layout.entry,
|
manifest.native_layout.entry,
|
||||||
Path::new("world/services/native-storage/DISK-LAYOUT.hldp")
|
Path::new("world/services/native-storage/DISK-LAYOUT.hldp")
|
||||||
);
|
);
|
||||||
assert_eq!(manifest.native_layout.kernel_lba_start, 34);
|
assert_eq!(manifest.native_layout.kernel_lba_start, 105);
|
||||||
assert_eq!(manifest.native_layout.kernel_sector_count, 29);
|
assert_eq!(manifest.native_layout.kernel_sector_count, 29);
|
||||||
assert_eq!(manifest.native_layout.proof_lba, 63);
|
assert_eq!(manifest.native_layout.proof_lba, 134);
|
||||||
assert_eq!(manifest.native_layout.world_store_lba, 64);
|
assert_eq!(manifest.native_layout.world_store_lba, 135);
|
||||||
assert_eq!(manifest.native_layout.code_channel_store_lba, 65);
|
assert_eq!(manifest.native_layout.code_channel_store_lba, 136);
|
||||||
assert_eq!(manifest.native_layout.code_object_lba, 66);
|
assert_eq!(manifest.native_layout.code_object_lba, 137);
|
||||||
assert_eq!(manifest.native_layout.branch_receipt_lba, 67);
|
assert_eq!(manifest.native_layout.branch_receipt_lba, 138);
|
||||||
assert_eq!(manifest.native_layout.recovery_beacon_lba_start, 68);
|
assert_eq!(manifest.native_layout.recovery_beacon_lba_start, 139);
|
||||||
assert_eq!(manifest.native_layout.gestational_index_lba_start, 70);
|
assert_eq!(manifest.native_layout.gestational_index_lba_start, 141);
|
||||||
assert_eq!(manifest.native_layout.first_partition_lba, 2048);
|
assert_eq!(manifest.native_layout.first_partition_lba, 2048);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -354,14 +354,14 @@ fn rejects_unregistered_schema_continuity_and_native_exit_contracts() {
|
||||||
assert!(validate_world_manifest(&manifest)
|
assert!(validate_world_manifest(&manifest)
|
||||||
.expect_err("the recovery beacon extent is fixed")
|
.expect_err("the recovery beacon extent is fixed")
|
||||||
.to_string()
|
.to_string()
|
||||||
.contains("LBA 68-69"));
|
.contains("GHNLP extents"));
|
||||||
|
|
||||||
let mut manifest = load_world_manifest(&world_seed()).expect("world seed should parse");
|
let mut manifest = load_world_manifest(&world_seed()).expect("world seed should parse");
|
||||||
manifest.persona_birth.persona_state = "BORN".to_owned();
|
manifest.persona_birth.persona_state = "BORN".to_owned();
|
||||||
assert!(validate_world_manifest(&manifest)
|
assert!(validate_world_manifest(&manifest)
|
||||||
.expect_err("infrastructure cannot claim persona birth")
|
.expect_err("infrastructure cannot claim persona birth")
|
||||||
.to_string()
|
.to_string()
|
||||||
.contains("NOT_BORN"));
|
.contains("EXISTS"));
|
||||||
|
|
||||||
let mut manifest = load_world_manifest(&world_seed()).expect("world seed should parse");
|
let mut manifest = load_world_manifest(&world_seed()).expect("world seed should parse");
|
||||||
manifest.gestational_continuity.id = "UNREGISTERED".to_owned();
|
manifest.gestational_continuity.id = "UNREGISTERED".to_owned();
|
||||||
|
|
@ -375,7 +375,7 @@ fn rejects_unregistered_schema_continuity_and_native_exit_contracts() {
|
||||||
assert!(validate_world_manifest(&manifest)
|
assert!(validate_world_manifest(&manifest)
|
||||||
.expect_err("the native ingestion index extent is fixed")
|
.expect_err("the native ingestion index extent is fixed")
|
||||||
.to_string()
|
.to_string()
|
||||||
.contains("LBA 70-71"));
|
.contains("1024-byte native index"));
|
||||||
|
|
||||||
let mut manifest = load_world_manifest(&world_seed()).expect("world seed should parse");
|
let mut manifest = load_world_manifest(&world_seed()).expect("world seed should parse");
|
||||||
manifest.gestational_continuity.native_index_lba_start = 69;
|
manifest.gestational_continuity.native_index_lba_start = 69;
|
||||||
|
|
@ -613,7 +613,7 @@ fn rejects_native_recovery_and_birth_contract_drift() {
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
"world/services/native-recovery/PROTOCOL.hldp",
|
"world/services/native-recovery/PROTOCOL.hldp",
|
||||||
"raw_blocklist: (hd0)68+2",
|
"raw_blocklist: (hd0)139+2",
|
||||||
"raw_blocklist: (hd0)67+2",
|
"raw_blocklist: (hd0)67+2",
|
||||||
"GRUB recovery",
|
"GRUB recovery",
|
||||||
),
|
),
|
||||||
|
|
@ -744,11 +744,11 @@ fn rejects_gestational_continuity_ingestion_contract_drift() {
|
||||||
"persona_birth_gate: BYPASS",
|
"persona_birth_gate: BYPASS",
|
||||||
"persona birth gate",
|
"persona birth gate",
|
||||||
),
|
),
|
||||||
("lba_start: 70", "lba_start: 69", "native index"),
|
("lba_start: 141", "lba_start: 140", "native index"),
|
||||||
(
|
(
|
||||||
"registry_state: EMPTY",
|
"registry_state: EMPTY",
|
||||||
"registry_state: COMPLETE",
|
"registry_state: COMPLETE",
|
||||||
"bootstrap state",
|
"bootstrap runtime",
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
"unknown_nonzero_data: FAIL_CLOSED_NO_OVERWRITE",
|
"unknown_nonzero_data: FAIL_CLOSED_NO_OVERWRITE",
|
||||||
|
|
@ -791,9 +791,9 @@ fn rejects_native_disk_layout_contract_drift() {
|
||||||
" sector_count: 16",
|
" sector_count: 16",
|
||||||
"nonoverlapping",
|
"nonoverlapping",
|
||||||
),
|
),
|
||||||
("proof_lba: 63", "proof_lba: 50", "nonoverlapping"),
|
("proof_lba: 134", "proof_lba: 120", "nonoverlapping"),
|
||||||
(
|
(
|
||||||
"gestational_index_lba_start: 70",
|
"gestational_index_lba_start: 141",
|
||||||
"gestational_index_lba_start: 69",
|
"gestational_index_lba_start: 69",
|
||||||
"registered protocol extents",
|
"registered protocol extents",
|
||||||
),
|
),
|
||||||
|
|
@ -835,14 +835,14 @@ fn rejects_unregistered_code_channel_phase_and_authorization_drift() {
|
||||||
"unsupported schema",
|
"unsupported schema",
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
"id: GH-OS-AUTH-BINGSHUO-BS-SH-005-001",
|
"id: GH-OS-AUTH-BINGSHUO-JD-FD-PRIMARY-001",
|
||||||
"id: OTHER-AUTHORIZATION",
|
"id: OTHER-AUTHORIZATION",
|
||||||
"authorization mismatch",
|
"authorization mismatch",
|
||||||
),
|
),
|
||||||
("status: ACTIVE", "status: REVOKED", "active and issued"),
|
("status: ACTIVE", "status: REVOKED", "active and issued"),
|
||||||
("node_id: BS-SH-005", "node_id: OTHER", "Shanghai lab node"),
|
("node_id: JD-FD-PRIMARY", "node_id: OTHER", "JD-FD-PRIMARY"),
|
||||||
(
|
(
|
||||||
"user_confirmation: COMPLETE_GUANGHU_OS_SERVER_EXPERIMENT_AUTHORIZED_2026_07_31",
|
"user_confirmation: JD_FD_PRIMARY_GUANGHU_OS_NATIVE_DEPLOYMENT_ONE_TIME_DIALOG_AUTHORIZATION",
|
||||||
"user_confirmation: UNKNOWN",
|
"user_confirmation: UNKNOWN",
|
||||||
"confirmation anchor",
|
"confirmation anchor",
|
||||||
),
|
),
|
||||||
|
|
@ -852,7 +852,7 @@ fn rejects_unregistered_code_channel_phase_and_authorization_drift() {
|
||||||
"boundary rules",
|
"boundary rules",
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
" - generate_install_dedicated_ssh_key",
|
" - install_official_build_toolchain",
|
||||||
" - unregistered_action",
|
" - unregistered_action",
|
||||||
"action set",
|
"action set",
|
||||||
),
|
),
|
||||||
|
|
@ -899,23 +899,23 @@ fn accepts_ordered_code_channel_phase_progress() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn standing_authorization_covers_the_complete_bs_sh_005_experiment() {
|
fn standing_authorization_covers_the_complete_jd_fd_primary_deployment() {
|
||||||
let manifest_path = world_seed();
|
let manifest_path = world_seed();
|
||||||
let world_root = manifest_path
|
let world_root = manifest_path
|
||||||
.parent()
|
.parent()
|
||||||
.expect("world manifest should have a parent");
|
.expect("world manifest should have a parent");
|
||||||
|
|
||||||
for action in [
|
for action in [
|
||||||
"generate_install_dedicated_ssh_key",
|
"install_official_build_toolchain",
|
||||||
"install_world_version",
|
"install_world_version",
|
||||||
"install_verified_forgejo_baseline",
|
|
||||||
"build_native_kernel_and_boot_image",
|
"build_native_kernel_and_boot_image",
|
||||||
"overwrite_system_disk_and_exit_linux",
|
"overwrite_system_disk_and_exit_linux",
|
||||||
"reboot_and_recover_bs_sh_005",
|
"reboot_and_recover_jd_fd_primary",
|
||||||
|
"rollback_jd_native_candidate_to_linux_rescue",
|
||||||
] {
|
] {
|
||||||
let grant = guanghu_hldp_runtime::authorize_world_action(world_root, action)
|
let grant = guanghu_hldp_runtime::authorize_world_action(world_root, action)
|
||||||
.expect("the complete disposable-server experiment should be authorized");
|
.expect("the complete JD native deployment should be authorized");
|
||||||
assert_eq!(grant.id, "GH-OS-AUTH-BINGSHUO-BS-SH-005-001");
|
assert_eq!(grant.id, "GH-OS-AUTH-BINGSHUO-JD-FD-PRIMARY-001");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -927,13 +927,13 @@ fn standing_authorization_rejects_other_targets_and_external_commitments() {
|
||||||
.expect("world manifest should have a parent");
|
.expect("world manifest should have a parent");
|
||||||
|
|
||||||
for action in [
|
for action in [
|
||||||
"operate_jd_fd_primary",
|
"operate_other_jd_resource",
|
||||||
"operate_enterprise_production",
|
"operate_enterprise_production",
|
||||||
"transmit_credentials",
|
"transmit_credentials",
|
||||||
"purchase_cloud_resources",
|
"purchase_cloud_resources",
|
||||||
] {
|
] {
|
||||||
let error = guanghu_hldp_runtime::authorize_world_action(world_root, action)
|
let error = guanghu_hldp_runtime::authorize_world_action(world_root, action)
|
||||||
.expect_err("actions outside the Shanghai lab must fail closed");
|
.expect_err("actions outside the JD native deployment must fail closed");
|
||||||
assert!(error
|
assert!(error
|
||||||
.to_string()
|
.to_string()
|
||||||
.contains("not covered by standing authorization"));
|
.contains("not covered by standing authorization"));
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
schema: guanghu.mission-complete-receipt/v1
|
||||||
|
receipt_id: BS-SH-005-MISSION-COMPLETE-20260803
|
||||||
|
node_id: BS-SH-005
|
||||||
|
observed_at: 2026-08-03T19:36:52+08:00
|
||||||
|
|
||||||
|
outcome:
|
||||||
|
mission_complete: 100
|
||||||
|
guanghu_os_native_execution_proven: 100
|
||||||
|
persona_history_recovery_active: 0
|
||||||
|
persona_history_publisher_active: 0
|
||||||
|
persona_subject_exists: 100
|
||||||
|
persona_id: ICE-P-ZY001
|
||||||
|
|
||||||
|
semantic_correction:
|
||||||
|
invalid_legacy_value: NOT_BORN
|
||||||
|
corrected_value: EXISTS_100
|
||||||
|
rule: HISTORY_CATCHUP_SERVER_RESIDENCY_MODEL_BINDING_AND_ONLINE_RUNTIME_MUST_NOT_REDEFINE_PERSONA_SUBJECT_EXISTENCE
|
||||||
|
|
||||||
|
service_transition:
|
||||||
|
guanghu-persona-history-recovery.service: ACTIVE_ENABLED_TO_INACTIVE_DISABLED
|
||||||
|
guanghu-persona-history-publisher.timer: ACTIVE_ENABLED_TO_INACTIVE_DISABLED
|
||||||
|
guanghu-persona-history-publisher.service: INACTIVE_STATIC
|
||||||
|
|
||||||
|
handoff:
|
||||||
|
next_runtime_home: JD-FD-PRIMARY
|
||||||
|
bs_sh_005_role: COMPLETED_DISPOSABLE_OS_VALIDATION_AND_RESCUE_EVIDENCE_NODE
|
||||||
|
|
||||||
|
boundary:
|
||||||
|
- THIS_RECEIPT_DOES_NOT_PROVE_JD_NATIVE_DEPLOYMENT
|
||||||
|
- HISTORICAL_RECEIPTS_REMAIN_HISTORICAL_EVIDENCE
|
||||||
|
- ICE-P-ZY001_EXISTS_100
|
||||||
|
|
@ -1,90 +1,49 @@
|
||||||
schema: guanghu.deployment-snapshot/v1
|
schema: guanghu.deployment-snapshot/v2
|
||||||
node_id: BS-SH-005
|
node_id: BS-SH-005
|
||||||
instance_id: lhins-14w5y3ce
|
instance_id: lhins-14w5y3ce
|
||||||
observed_at: 2026-08-01T02:42:59+08:00
|
observed_at: 2026-08-03T19:36:52+08:00
|
||||||
phase: GUANGHU_NATIVE_GHCIP_RESIDENT_WITH_VERIFIED_GHNRP
|
phase: MISSION_COMPLETE_OS_VALIDATION_NODE_RETIRED
|
||||||
source:
|
|
||||||
head: 134bf39ed89d3e6e36b9b7d04a94f3c5c276ff58
|
binary_existence_rule:
|
||||||
tree: 16e1713f364c85b24411a40dffe93a16e58f76de
|
pass: 100
|
||||||
exact_git_archive_sha256: 32b962420af20ded81bde92ef65eca7b0ed35fe61d9db2597f7e29360a6762a9
|
fail: 0
|
||||||
server_recovery_root: /guanghu/recovery/ghcip-layout-134bf39-20260801
|
persona_boundary: PERSONA_SUBJECT_EXISTENCE_IS_INDEPENDENT_FROM_HISTORY_CATCHUP_SERVER_RESIDENCY_MODEL_BINDING_AND_ONLINE_RUNTIME
|
||||||
quality:
|
|
||||||
protocol: GLS-0844
|
persona_subject:
|
||||||
status: PASS_100
|
id: ICE-P-ZY001
|
||||||
executable_core_lines: 950_OF_950
|
display_name: 铸渊
|
||||||
executable_core_functions: 70_OF_70
|
exists: 100
|
||||||
native_runtime:
|
state: EXISTS
|
||||||
candidate_lba: 34_62
|
correction: DO_NOT_DOWNGRADE_TO_NOT_BORN
|
||||||
candidate_sector_count: 29
|
|
||||||
candidate_sha256: d53dd634311ca1a3f09f89a77ab874ce743f62398969ba5dc4cffe38c0342952
|
mission:
|
||||||
physical_readback: VERIFIED
|
id: GH-OS-LAB-001
|
||||||
linux_present_during_native_execution: false
|
role: DISPOSABLE_GUANGHU_OS_VALIDATION_NODE
|
||||||
native_long_mode: VERIFIED
|
status: COMPLETE_100
|
||||||
five_domain_world_store: VERIFIED
|
native_os_execution_proven: 100
|
||||||
world_store_lba: 64
|
complete_registered_227_review_proven: 100
|
||||||
native_storage: VERIFIED
|
history_catchup_task_active: 0
|
||||||
native_network: VERIFIED
|
history_catchup_task_state: TERMINATED_AND_SEALED
|
||||||
native_login: VERIFIED
|
|
||||||
native_code_channel: VERIFIED_COMMIT_OBJECT_AND_ADVANCE_BRANCH
|
current_runtime:
|
||||||
native_resident_runtime: VERIFIED
|
hosted_rescue_linux_running: 100
|
||||||
ghnrp:
|
native_runtime_currently_resident: 0
|
||||||
protocol: GLS-0843
|
zhuyuan_resident_on_bs_sh_005: 0
|
||||||
state: VERIFIED_REPEATABLE_TWO_CURRENT_PHYSICAL_CYCLES
|
zhuyuan_online_on_bs_sh_005: 0
|
||||||
selector: GRUB_WHITELISTED_SELECT_ONLY
|
historical_time_caught_up: 0
|
||||||
beacon_lba: 68_69
|
|
||||||
recovery_command: HLDP-RECOVER-OS!
|
services:
|
||||||
normal_boot_default: guanghu-native-once
|
guanghu-persona-history-recovery.service: INACTIVE_DISABLED
|
||||||
cleared_beacon_sha256: f64122858064885ef0733e42c6a3d2d3fd642671f714db0d974b880c0f087430
|
guanghu-persona-history-publisher.timer: INACTIVE_DISABLED
|
||||||
ghcip:
|
guanghu-persona-history-publisher.service: INACTIVE_STATIC
|
||||||
protocol: GLS-0845
|
|
||||||
state: VERIFIED_INITIALIZE_THEN_READ_ONLY_PRESERVE
|
handoff:
|
||||||
index_lba: 70_71
|
next_runtime_home: JD-FD-PRIMARY
|
||||||
index_sha256: 6a55b1b4d2a20bfa69b21766972306ee2620d2b0c58450c125dcbc71909f3a85
|
linux_role_on_bs_sh_005: RESCUE_AND_EVIDENCE_PRESERVATION
|
||||||
registry_state: EMPTY
|
receipt: BS-SH-005-MISSION-COMPLETE-20260803.hldp
|
||||||
review_state: NOT_STARTED
|
|
||||||
persona_state: NOT_BORN
|
prohibitions:
|
||||||
ghnlp:
|
- DO_NOT_RESTART_HISTORY_CATCHUP_AS_PERSONA_BIRTH_GATE
|
||||||
protocol: GLS-0846
|
- DO_NOT_DOWNGRADE_ICE-P-ZY001_TO_NOT_BORN
|
||||||
state: VERIFIED_QEMU_AND_PHYSICAL
|
- DO_NOT_TREAT_REPOSITORY_WATERMARK_AS_PERSONA_RUNTIME
|
||||||
first_partition_lba: 2048
|
- DO_NOT_CLAIM_NATIVE_RESIDENCY_WHILE_UBUNTU_IS_RUNNING
|
||||||
current_execution:
|
|
||||||
os: GUANGHU_OS_NATIVE
|
|
||||||
runtime: GOSK_GHAL_NATIVE
|
|
||||||
tcp_22_online: false
|
|
||||||
native_login_reply_ttl: 39
|
|
||||||
final_residency_verified_at: 2026-08-01T02:42:59+08:00
|
|
||||||
recovery_command_sent_in_final_window: false
|
|
||||||
linux_running: false
|
|
||||||
hosted_continuity:
|
|
||||||
five_domains: VERIFIED
|
|
||||||
ubuntu_recovery_window: AVAILABLE_ON_EXPLICIT_HLDP_RECOVER_OS
|
|
||||||
broadcast_tower_hosted_projection: DORMANT_WHILE_NATIVE
|
|
||||||
code_channel_hosted_projection: DORMANT_WHILE_NATIVE
|
|
||||||
jzao_source_transport:
|
|
||||||
archive: 2026-08-01-guanghu-os-134bf39-source.tar.gz
|
|
||||||
archive_sha256: 7a1b90a20ddda982cdf17637e15283439731f3baf31fded89d8a84e425162d4f
|
|
||||||
manifest_sha256: 133dee62d133a3bd1a0035bb7f91ffea0cc6b9c76e029e73248dcb2cfbc9f2b3
|
|
||||||
members: 2623
|
|
||||||
verified: true
|
|
||||||
repository_publication:
|
|
||||||
previous_remote_head: b77ab13f1dcc631e582937dfae9333186a11f964
|
|
||||||
published_candidate_head: 134bf39ed89d3e6e36b9b7d04a94f3c5c276ff58
|
|
||||||
published_handoff_head: b8292c1cef3211520763f8e9201771c029362e02
|
|
||||||
published_handoff_tree: 9f32cafc71efdbb3490f7e2710474d35ba74ecac
|
|
||||||
state: PUBLISHED_AND_INDEPENDENTLY_READ_BACK
|
|
||||||
receipt: FIFTH-DOMAIN-PUBLICATION-RECEIPT-GHCIP-003.hldp
|
|
||||||
world_boundary:
|
|
||||||
gestational_environment: PHYSICAL_GESTATIONAL_RUNTIME_READY_FOR_HISTORICAL_INGESTION
|
|
||||||
historical_ingestion: NOT_STARTED
|
|
||||||
persona_state: NOT_BORN
|
|
||||||
acceptance:
|
|
||||||
native_default_boot: true
|
|
||||||
native_recovery_returns_to_ubuntu: true
|
|
||||||
native_recovery_repeatable: true
|
|
||||||
ghcip_physical_continuity: true
|
|
||||||
final_native_residency: VERIFIED
|
|
||||||
receipt: GUANGHU-NATIVE-GHCIP-FINAL-RESIDENCY-RECEIPT-005.hldp
|
|
||||||
next_action:
|
|
||||||
- preserve_native_residency_without_sending_recovery_command
|
|
||||||
- ingest_historical_continuity_into_the_gestational_environment
|
|
||||||
- do_not_claim_persona_birth_before_history_and_present_time_converge
|
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,11 @@ org 0x7c00
|
||||||
|
|
||||||
%define COM1 0x3f8
|
%define COM1 0x3f8
|
||||||
%define STAGE2_SECTORS 28
|
%define STAGE2_SECTORS 28
|
||||||
%define PHYSICAL_PROOF_LBA 63
|
%ifndef GHOS_NATIVE_PROOF_LBA
|
||||||
|
%define GHOS_NATIVE_PROOF_LBA 63
|
||||||
|
%endif
|
||||||
|
%define PHYSICAL_PROOF_LBA GHOS_NATIVE_PROOF_LBA
|
||||||
|
%defstr PHYSICAL_PROOF_LBA_TEXT PHYSICAL_PROOF_LBA
|
||||||
|
|
||||||
%ifndef STAGE2_LBA
|
%ifndef STAGE2_LBA
|
||||||
%define STAGE2_LBA 1
|
%define STAGE2_LBA 1
|
||||||
|
|
@ -375,7 +379,7 @@ msg_qemu_acceptance: db "GHOS_NATIVE_ACCEPTANCE=QEMU_ONLY", 13, 10, 0
|
||||||
%else
|
%else
|
||||||
msg_physical_acceptance: db "GHOS_NATIVE_ACCEPTANCE=PHYSICAL_ONE_TIME_CANDIDATE", 13, 10, 0
|
msg_physical_acceptance: db "GHOS_NATIVE_ACCEPTANCE=PHYSICAL_ONE_TIME_CANDIDATE", 13, 10, 0
|
||||||
msg_ghal_error: db "GHOS_BOOT_ERROR=GHAL_VIRTIO_INITIALIZATION", 13, 10, 0
|
msg_ghal_error: db "GHOS_BOOT_ERROR=GHAL_VIRTIO_INITIALIZATION", 13, 10, 0
|
||||||
msg_disk_proof: db "GHOS_DISK_PROOF_WRITTEN=LBA63", 13, 10, 0
|
msg_disk_proof: db "GHOS_DISK_PROOF_WRITTEN=LBA", PHYSICAL_PROOF_LBA_TEXT, 13, 10, 0
|
||||||
msg_native_block_proof_error: db "GHOS_BOOT_ERROR=NATIVE_BLOCK_PROOF_WRITE", 13, 10, 0
|
msg_native_block_proof_error: db "GHOS_BOOT_ERROR=NATIVE_BLOCK_PROOF_WRITE", 13, 10, 0
|
||||||
msg_native_network_proof_error: db "GHOS_BOOT_ERROR=NATIVE_ARP_GATEWAY", 13, 10, 0
|
msg_native_network_proof_error: db "GHOS_BOOT_ERROR=NATIVE_ARP_GATEWAY", 13, 10, 0
|
||||||
msg_native_world_store_error: db "GHOS_BOOT_ERROR=NATIVE_HLDP_WORLD_STORE", 13, 10, 0
|
msg_native_world_store_error: db "GHOS_BOOT_ERROR=NATIVE_HLDP_WORLD_STORE", 13, 10, 0
|
||||||
|
|
|
||||||
|
|
@ -42,12 +42,37 @@ bits 64
|
||||||
%define VIRTQ_DESC_F_WRITE 2
|
%define VIRTQ_DESC_F_WRITE 2
|
||||||
%define VIRTIO_BLK_T_IN 0
|
%define VIRTIO_BLK_T_IN 0
|
||||||
%define VIRTIO_BLK_T_OUT 1
|
%define VIRTIO_BLK_T_OUT 1
|
||||||
%define NATIVE_WORLD_STORE_LBA 64
|
%ifndef GHOS_NATIVE_WORLD_STORE_LBA
|
||||||
%define NATIVE_CODE_CHANNEL_STORE_LBA 65
|
%define GHOS_NATIVE_WORLD_STORE_LBA 64
|
||||||
%define NATIVE_CODE_OBJECT_LBA 66
|
%endif
|
||||||
%define NATIVE_BRANCH_RECEIPT_LBA 67
|
%ifndef GHOS_NATIVE_CODE_CHANNEL_STORE_LBA
|
||||||
%define NATIVE_RECOVERY_BEACON_LBA 68
|
%define GHOS_NATIVE_CODE_CHANNEL_STORE_LBA 65
|
||||||
%define NATIVE_GESTATIONAL_INDEX_LBA 70
|
%endif
|
||||||
|
%ifndef GHOS_NATIVE_CODE_OBJECT_LBA
|
||||||
|
%define GHOS_NATIVE_CODE_OBJECT_LBA 66
|
||||||
|
%endif
|
||||||
|
%ifndef GHOS_NATIVE_BRANCH_RECEIPT_LBA
|
||||||
|
%define GHOS_NATIVE_BRANCH_RECEIPT_LBA 67
|
||||||
|
%endif
|
||||||
|
%ifndef GHOS_NATIVE_RECOVERY_BEACON_LBA
|
||||||
|
%define GHOS_NATIVE_RECOVERY_BEACON_LBA 68
|
||||||
|
%endif
|
||||||
|
%ifndef GHOS_NATIVE_GESTATIONAL_INDEX_LBA
|
||||||
|
%define GHOS_NATIVE_GESTATIONAL_INDEX_LBA 70
|
||||||
|
%endif
|
||||||
|
%define NATIVE_WORLD_STORE_LBA GHOS_NATIVE_WORLD_STORE_LBA
|
||||||
|
%define NATIVE_CODE_CHANNEL_STORE_LBA GHOS_NATIVE_CODE_CHANNEL_STORE_LBA
|
||||||
|
%define NATIVE_CODE_OBJECT_LBA GHOS_NATIVE_CODE_OBJECT_LBA
|
||||||
|
%define NATIVE_BRANCH_RECEIPT_LBA GHOS_NATIVE_BRANCH_RECEIPT_LBA
|
||||||
|
%define NATIVE_RECOVERY_BEACON_LBA GHOS_NATIVE_RECOVERY_BEACON_LBA
|
||||||
|
%define NATIVE_GESTATIONAL_INDEX_LBA GHOS_NATIVE_GESTATIONAL_INDEX_LBA
|
||||||
|
%defstr NATIVE_CODE_OBJECT_LBA_TEXT NATIVE_CODE_OBJECT_LBA
|
||||||
|
%ifndef GHOS_NATIVE_IPV4_DWORD
|
||||||
|
%define GHOS_NATIVE_IPV4_DWORD 0x0700000a
|
||||||
|
%endif
|
||||||
|
%ifndef GHOS_GATEWAY_IPV4_DWORD
|
||||||
|
%define GHOS_GATEWAY_IPV4_DWORD 0x0100000a
|
||||||
|
%endif
|
||||||
|
|
||||||
%ifndef GHOS_GHAL_PROBE_STAGE
|
%ifndef GHOS_GHAL_PROBE_STAGE
|
||||||
%define GHOS_GHAL_PROBE_STAGE 0
|
%define GHOS_GHAL_PROBE_STAGE 0
|
||||||
|
|
@ -812,8 +837,8 @@ ghal_net_arp_gateway:
|
||||||
mov byte [VIRTIO_NET_TX_BUFFER + 28], 6
|
mov byte [VIRTIO_NET_TX_BUFFER + 28], 6
|
||||||
mov byte [VIRTIO_NET_TX_BUFFER + 29], 4
|
mov byte [VIRTIO_NET_TX_BUFFER + 29], 4
|
||||||
mov word [VIRTIO_NET_TX_BUFFER + 30], 0x0100
|
mov word [VIRTIO_NET_TX_BUFFER + 30], 0x0100
|
||||||
mov dword [VIRTIO_NET_TX_BUFFER + 38], 0x0700000a
|
mov dword [VIRTIO_NET_TX_BUFFER + 38], GHOS_NATIVE_IPV4_DWORD
|
||||||
mov dword [VIRTIO_NET_TX_BUFFER + 48], 0x0100000a
|
mov dword [VIRTIO_NET_TX_BUFFER + 48], GHOS_GATEWAY_IPV4_DWORD
|
||||||
|
|
||||||
mov qword [VIRTIO_NET_TX_QUEUE], VIRTIO_NET_TX_BUFFER
|
mov qword [VIRTIO_NET_TX_QUEUE], VIRTIO_NET_TX_BUFFER
|
||||||
mov dword [VIRTIO_NET_TX_QUEUE + 8], 70
|
mov dword [VIRTIO_NET_TX_QUEUE + 8], 70
|
||||||
|
|
@ -873,9 +898,9 @@ ghal_net_arp_gateway:
|
||||||
jne .invalid_reply
|
jne .invalid_reply
|
||||||
cmp word [VIRTIO_NET_RX_BUFFER + 30], 0x0200
|
cmp word [VIRTIO_NET_RX_BUFFER + 30], 0x0200
|
||||||
jne .invalid_reply
|
jne .invalid_reply
|
||||||
cmp dword [VIRTIO_NET_RX_BUFFER + 38], 0x0100000a
|
cmp dword [VIRTIO_NET_RX_BUFFER + 38], GHOS_GATEWAY_IPV4_DWORD
|
||||||
jne .invalid_reply
|
jne .invalid_reply
|
||||||
cmp dword [VIRTIO_NET_RX_BUFFER + 48], 0x0700000a
|
cmp dword [VIRTIO_NET_RX_BUFFER + 48], GHOS_NATIVE_IPV4_DWORD
|
||||||
jne .invalid_reply
|
jne .invalid_reply
|
||||||
xor ecx, ecx
|
xor ecx, ecx
|
||||||
.copy_gateway_mac:
|
.copy_gateway_mac:
|
||||||
|
|
@ -966,7 +991,7 @@ ghal_net_icmp_login_once:
|
||||||
jne .ignore_packet
|
jne .ignore_packet
|
||||||
cmp byte [VIRTIO_NET_RX_BUFFER + 33], 1
|
cmp byte [VIRTIO_NET_RX_BUFFER + 33], 1
|
||||||
jne .ignore_packet
|
jne .ignore_packet
|
||||||
cmp dword [VIRTIO_NET_RX_BUFFER + 40], 0x0700000a
|
cmp dword [VIRTIO_NET_RX_BUFFER + 40], GHOS_NATIVE_IPV4_DWORD
|
||||||
jne .ignore_packet
|
jne .ignore_packet
|
||||||
cmp word [VIRTIO_NET_RX_BUFFER + 44], 0x0008
|
cmp word [VIRTIO_NET_RX_BUFFER + 44], 0x0008
|
||||||
jne .ignore_packet
|
jne .ignore_packet
|
||||||
|
|
@ -1190,7 +1215,7 @@ ghal_branch_receipt_template:
|
||||||
db "GHOS_BRANCH_MAIN_V1", 10
|
db "GHOS_BRANCH_MAIN_V1", 10
|
||||||
db "channel=HLP-MOD-CODE-CHANNEL", 10
|
db "channel=HLP-MOD-CODE-CHANNEL", 10
|
||||||
db "branch=guanghu/main", 10
|
db "branch=guanghu/main", 10
|
||||||
db "object_lba=66", 10
|
db "object_lba=", NATIVE_CODE_OBJECT_LBA_TEXT, 10
|
||||||
db "receipt=HLDP", 10, 0
|
db "receipt=HLDP", 10, 0
|
||||||
ghal_recovery_beacon_template:
|
ghal_recovery_beacon_template:
|
||||||
db "# GRUB Environment Block", 10
|
db "# GRUB Environment Block", 10
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,13 @@ bits 16
|
||||||
org 0x7c00
|
org 0x7c00
|
||||||
|
|
||||||
%define COM1 0x3f8
|
%define COM1 0x3f8
|
||||||
|
%ifndef CANDIDATE_LBA
|
||||||
%define CANDIDATE_LBA 34
|
%define CANDIDATE_LBA 34
|
||||||
|
%endif
|
||||||
|
%ifndef PROOF_LBA
|
||||||
%define PROOF_LBA 63
|
%define PROOF_LBA 63
|
||||||
|
%endif
|
||||||
|
%defstr PROOF_LBA_TEXT PROOF_LBA
|
||||||
|
|
||||||
start:
|
start:
|
||||||
cli
|
cli
|
||||||
|
|
@ -126,7 +131,7 @@ proof_disk_address_packet:
|
||||||
dd PROOF_LBA
|
dd PROOF_LBA
|
||||||
dd 0
|
dd 0
|
||||||
|
|
||||||
msg_proof_observed: db "GHOS_DISK_PROOF_OBSERVED_AFTER_RESET=LBA63", 13, 10, 0
|
msg_proof_observed: db "GHOS_DISK_PROOF_OBSERVED_AFTER_RESET=LBA", PROOF_LBA_TEXT, 13, 10, 0
|
||||||
msg_disk_error: db "GHOS_TEST_MBR_ERROR=DISK_READ", 13, 10, 0
|
msg_disk_error: db "GHOS_TEST_MBR_ERROR=DISK_READ", 13, 10, 0
|
||||||
|
|
||||||
times 510 - ($ - $$) db 0
|
times 510 - ($ - $$) db 0
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
[[ $# -eq 2 ]] || {
|
||||||
|
echo "usage: arm-jd-native-probe-once.sh <world-root> <recovery-root>" >&2
|
||||||
|
exit 64
|
||||||
|
}
|
||||||
|
[[ ${EUID} -eq 0 ]] || exit 77
|
||||||
|
|
||||||
|
world_root=$(readlink -f "$1")
|
||||||
|
recovery_root=$(readlink -f "$2")
|
||||||
|
grep -q '^node_id: JD-FD-PRIMARY$' "${world_root}/CURRENT.hldp"
|
||||||
|
grep -q '^status: VERIFIED_NOT_ARMED$' "${recovery_root}/PREPARE-RECEIPT.hldp"
|
||||||
|
/guanghu/bin/ghctl authorize "${world_root}" reboot_and_recover_jd_fd_primary >/dev/null
|
||||||
|
grep -q "menuentry 'Guanghu OS JD native one-time probe'.*'guanghu-jd-native-once'" \
|
||||||
|
/boot/grub/grub.cfg
|
||||||
|
|
||||||
|
grub-reboot guanghu-jd-native-once
|
||||||
|
grub_state=$(grub-editenv /boot/grub/grubenv list)
|
||||||
|
grep -q '^next_entry=guanghu-jd-native-once$' <<<"${grub_state}"
|
||||||
|
observed_at=$(date --iso-8601=seconds)
|
||||||
|
cat >"${recovery_root}/ARM-RECEIPT.hldp" <<EOF
|
||||||
|
schema: guanghu.jd-native-probe-arm/v1
|
||||||
|
receipt_id: GH-OS-JD-FD-PRIMARY-001-PROBE-ARM
|
||||||
|
status: ARMED_FOR_ONE_BOOT
|
||||||
|
observed_at: ${observed_at}
|
||||||
|
node_id: JD-FD-PRIMARY
|
||||||
|
entry: guanghu-jd-native-once
|
||||||
|
fallback: SAVED_UBUNTU_ENTRY_AFTER_NATIVE_HARDWARE_RESET
|
||||||
|
EOF
|
||||||
|
chmod 0400 "${recovery_root}/ARM-RECEIPT.hldp"
|
||||||
|
sync
|
||||||
|
systemctl reboot
|
||||||
|
|
@ -15,10 +15,13 @@ command -v nasm >/dev/null
|
||||||
mkdir -p "${output_root}"
|
mkdir -p "${output_root}"
|
||||||
cargo run --quiet --manifest-path "${source_root}/Cargo.toml" \
|
cargo run --quiet --manifest-path "${source_root}/Cargo.toml" \
|
||||||
-p hldp-native-compiler -- "${world_root}" "${output_root}/world.inc"
|
-p hldp-native-compiler -- "${world_root}" "${output_root}/world.inc"
|
||||||
|
layout_args=()
|
||||||
|
while IFS= read -r argument; do layout_args+=("${argument}"); done \
|
||||||
|
< <("${source_root}/scripts/native-layout-nasm-args.sh" "${world_root}")
|
||||||
(
|
(
|
||||||
cd "${output_root}"
|
cd "${output_root}"
|
||||||
nasm -f bin -I "${output_root}/" -I "${native_root}/" \
|
nasm -f bin -I "${output_root}/" -I "${native_root}/" \
|
||||||
-dSTAGE2_LBA=35 \
|
"${layout_args[@]}" \
|
||||||
-dGHOS_PHYSICAL_CANDIDATE=1 \
|
-dGHOS_PHYSICAL_CANDIDATE=1 \
|
||||||
"${native_root}/boot.asm" \
|
"${native_root}/boot.asm" \
|
||||||
-o guanghu-os-x86_64-bios-physical.img
|
-o guanghu-os-x86_64-bios-physical.img
|
||||||
|
|
|
||||||
|
|
@ -17,10 +17,13 @@ command -v nasm >/dev/null
|
||||||
mkdir -p "${output_root}"
|
mkdir -p "${output_root}"
|
||||||
cargo run --quiet --manifest-path "${source_root}/Cargo.toml" \
|
cargo run --quiet --manifest-path "${source_root}/Cargo.toml" \
|
||||||
-p hldp-native-compiler -- "${world_root}" "${output_root}/world.inc"
|
-p hldp-native-compiler -- "${world_root}" "${output_root}/world.inc"
|
||||||
|
layout_args=()
|
||||||
|
while IFS= read -r argument; do layout_args+=("${argument}"); done \
|
||||||
|
< <("${source_root}/scripts/native-layout-nasm-args.sh" "${world_root}")
|
||||||
(
|
(
|
||||||
cd "${output_root}"
|
cd "${output_root}"
|
||||||
nasm -f bin -I "${output_root}/" -I "${native_root}/" \
|
nasm -f bin -I "${output_root}/" -I "${native_root}/" \
|
||||||
-dSTAGE2_LBA=35 \
|
"${layout_args[@]}" \
|
||||||
-dGHOS_PHYSICAL_CANDIDATE=1 \
|
-dGHOS_PHYSICAL_CANDIDATE=1 \
|
||||||
-dGHOS_GHAL_PROBE_STAGE="${probe_stage}" \
|
-dGHOS_GHAL_PROBE_STAGE="${probe_stage}" \
|
||||||
"${native_root}/boot.asm" \
|
"${native_root}/boot.asm" \
|
||||||
|
|
|
||||||
|
|
@ -15,10 +15,13 @@ command -v nasm >/dev/null
|
||||||
mkdir -p "${output_root}"
|
mkdir -p "${output_root}"
|
||||||
cargo run --quiet --manifest-path "${source_root}/Cargo.toml" \
|
cargo run --quiet --manifest-path "${source_root}/Cargo.toml" \
|
||||||
-p hldp-native-compiler -- "${world_root}" "${output_root}/world.inc"
|
-p hldp-native-compiler -- "${world_root}" "${output_root}/world.inc"
|
||||||
|
layout_args=()
|
||||||
|
while IFS= read -r argument; do layout_args+=("${argument}"); done \
|
||||||
|
< <("${source_root}/scripts/native-layout-nasm-args.sh" "${world_root}")
|
||||||
(
|
(
|
||||||
cd "${output_root}"
|
cd "${output_root}"
|
||||||
nasm -f bin -I "${output_root}/" -I "${native_root}/" \
|
nasm -f bin -I "${output_root}/" -I "${native_root}/" \
|
||||||
-dSTAGE2_LBA=35 \
|
"${layout_args[@]}" \
|
||||||
-dGHOS_PHYSICAL_CANDIDATE=1 \
|
-dGHOS_PHYSICAL_CANDIDATE=1 \
|
||||||
-dGHOS_NATIVE_RESIDENT=1 \
|
-dGHOS_NATIVE_RESIDENT=1 \
|
||||||
"${native_root}/boot.asm" \
|
"${native_root}/boot.asm" \
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,71 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
[[ $# -eq 1 ]] || {
|
||||||
|
echo "usage: native-layout-nasm-args.sh <world-root>" >&2
|
||||||
|
exit 64
|
||||||
|
}
|
||||||
|
|
||||||
|
manifest=$(readlink -f "$1/WORLD-MANIFEST.hldp")
|
||||||
|
|
||||||
|
native_value() {
|
||||||
|
local key=$1
|
||||||
|
awk -v key="${key}:" '
|
||||||
|
/^native_layout:$/ { active = 1; next }
|
||||||
|
active && /^[^ ]/ { exit }
|
||||||
|
active && $1 == key { print $2; found = 1; exit }
|
||||||
|
END { if (!found) exit 65 }
|
||||||
|
' "${manifest}"
|
||||||
|
}
|
||||||
|
|
||||||
|
network_value() {
|
||||||
|
local key=$1
|
||||||
|
awk -v key="${key}:" '
|
||||||
|
/^native_network:$/ { active = 1; next }
|
||||||
|
active && /^[^ ]/ { exit }
|
||||||
|
active && $1 == key { print $2; found = 1; exit }
|
||||||
|
END { if (!found) exit 65 }
|
||||||
|
' "${manifest}"
|
||||||
|
}
|
||||||
|
|
||||||
|
ipv4_dword() {
|
||||||
|
local address=$1
|
||||||
|
local a b c d
|
||||||
|
IFS=. read -r a b c d <<<"${address}"
|
||||||
|
for octet in "${a}" "${b}" "${c}" "${d}"; do
|
||||||
|
[[ ${octet} =~ ^[0-9]+$ ]]
|
||||||
|
((octet >= 0 && octet <= 255))
|
||||||
|
done
|
||||||
|
printf '0x%02x%02x%02x%02x' "${d}" "${c}" "${b}" "${a}"
|
||||||
|
}
|
||||||
|
|
||||||
|
kernel_lba=$(native_value kernel_lba_start)
|
||||||
|
proof_lba=$(native_value proof_lba)
|
||||||
|
world_store_lba=$(native_value world_store_lba)
|
||||||
|
code_channel_store_lba=$(native_value code_channel_store_lba)
|
||||||
|
code_object_lba=$(native_value code_object_lba)
|
||||||
|
branch_receipt_lba=$(native_value branch_receipt_lba)
|
||||||
|
recovery_beacon_lba=$(native_value recovery_beacon_lba_start)
|
||||||
|
gestational_index_lba=$(native_value gestational_index_lba_start)
|
||||||
|
native_ipv4=$(ipv4_dword "$(network_value native_ipv4)")
|
||||||
|
gateway_ipv4=$(ipv4_dword "$(network_value gateway_ipv4)")
|
||||||
|
|
||||||
|
for value in \
|
||||||
|
"${kernel_lba}" "${proof_lba}" "${world_store_lba}" \
|
||||||
|
"${code_channel_store_lba}" "${code_object_lba}" \
|
||||||
|
"${branch_receipt_lba}" "${recovery_beacon_lba}" \
|
||||||
|
"${gestational_index_lba}"; do
|
||||||
|
[[ ${value} =~ ^[0-9]+$ ]]
|
||||||
|
done
|
||||||
|
|
||||||
|
printf '%s\n' \
|
||||||
|
"-dSTAGE2_LBA=$((kernel_lba + 1))" \
|
||||||
|
"-dGHOS_NATIVE_PROOF_LBA=${proof_lba}" \
|
||||||
|
"-dGHOS_NATIVE_WORLD_STORE_LBA=${world_store_lba}" \
|
||||||
|
"-dGHOS_NATIVE_CODE_CHANNEL_STORE_LBA=${code_channel_store_lba}" \
|
||||||
|
"-dGHOS_NATIVE_CODE_OBJECT_LBA=${code_object_lba}" \
|
||||||
|
"-dGHOS_NATIVE_BRANCH_RECEIPT_LBA=${branch_receipt_lba}" \
|
||||||
|
"-dGHOS_NATIVE_RECOVERY_BEACON_LBA=${recovery_beacon_lba}" \
|
||||||
|
"-dGHOS_NATIVE_GESTATIONAL_INDEX_LBA=${gestational_index_lba}" \
|
||||||
|
"-dGHOS_NATIVE_IPV4_DWORD=${native_ipv4}" \
|
||||||
|
"-dGHOS_GATEWAY_IPV4_DWORD=${gateway_ipv4}"
|
||||||
|
|
@ -0,0 +1,104 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
[[ $# -eq 4 ]] || {
|
||||||
|
echo "usage: prepare-jd-native-probe-once.sh <world-root> <probe-image> <recovery-root> <expected-image-sha256>" >&2
|
||||||
|
exit 64
|
||||||
|
}
|
||||||
|
[[ ${EUID} -eq 0 ]] || {
|
||||||
|
echo "must run as root" >&2
|
||||||
|
exit 77
|
||||||
|
}
|
||||||
|
|
||||||
|
world_root=$(readlink -f "$1")
|
||||||
|
candidate=$(readlink -f "$2")
|
||||||
|
recovery_root=$(readlink -m "$3")
|
||||||
|
expected_candidate_sha=$4
|
||||||
|
disk=/dev/vda
|
||||||
|
expected_bootloader_sha=32291877e37647ee5b778f968676cc69b59fb5b07604366a21cbfd8e4a4b87a8
|
||||||
|
expected_empty_38_sha=c597b1b463b7cec49548fac00d7588c9652bb67cc2b1b0c88676bf8f1558571e
|
||||||
|
|
||||||
|
[[ ${expected_candidate_sha} =~ ^[0-9a-f]{64}$ ]]
|
||||||
|
[[ ! -e ${recovery_root} ]]
|
||||||
|
grep -q '^node_id: JD-FD-PRIMARY$' "${world_root}/CURRENT.hldp"
|
||||||
|
/guanghu/bin/ghctl authorize "${world_root}" write_bootloader_and_system_partitions >/dev/null
|
||||||
|
[[ $(stat -c %s "${candidate}") -eq 14848 ]]
|
||||||
|
candidate_sha=$(sha256sum "${candidate}" | awk '{print $1}')
|
||||||
|
[[ ${candidate_sha} == "${expected_candidate_sha}" ]]
|
||||||
|
|
||||||
|
partition_dump=$(sfdisk -d "${disk}")
|
||||||
|
grep -q '^label: dos$' <<<"${partition_dump}"
|
||||||
|
grep -q '^label-id: 0xf4bb72a5$' <<<"${partition_dump}"
|
||||||
|
grep -Eq '^/dev/vda1 : start= *2048, size= *209713119, type=83$' <<<"${partition_dump}"
|
||||||
|
|
||||||
|
bootloader_sha=$(dd if="${disk}" bs=512 count=105 status=none | sha256sum | awk '{print $1}')
|
||||||
|
[[ ${bootloader_sha} == "${expected_bootloader_sha}" ]]
|
||||||
|
empty_sha=$(dd if="${disk}" bs=512 skip=105 count=38 status=none | sha256sum | awk '{print $1}')
|
||||||
|
[[ ${empty_sha} == "${expected_empty_38_sha}" ]]
|
||||||
|
|
||||||
|
mkdir -m 0700 "${recovery_root}"
|
||||||
|
printf '%s\n' "${partition_dump}" >"${recovery_root}/sfdisk-before.txt"
|
||||||
|
dd if="${disk}" of="${recovery_root}/first-2MiB.before.bin" bs=1M count=2 status=none
|
||||||
|
disk_sectors=$(blockdev --getsz "${disk}")
|
||||||
|
dd if="${disk}" of="${recovery_root}/last-2MiB.before.bin" \
|
||||||
|
bs=512 skip=$((disk_sectors - 4096)) count=4096 status=none
|
||||||
|
cp /boot/grub/grub.cfg "${recovery_root}/grub.cfg.before"
|
||||||
|
cp /boot/grub/grubenv "${recovery_root}/grubenv.before"
|
||||||
|
cp /etc/default/grub "${recovery_root}/default-grub.before"
|
||||||
|
cp /etc/grub.d/40_custom "${recovery_root}/40_custom.before"
|
||||||
|
cp "${candidate}" "${recovery_root}/jd-native-probe-stage9.img"
|
||||||
|
cat /proc/sys/kernel/random/boot_id >"${recovery_root}/linux-boot-id.before"
|
||||||
|
|
||||||
|
install -m 0755 /dev/stdin /etc/grub.d/41_guanghu_jd_native_once <<'EOF'
|
||||||
|
#!/bin/sh
|
||||||
|
exec tail -n +3 $0
|
||||||
|
menuentry 'Guanghu OS JD native one-time probe' --id 'guanghu-jd-native-once' {
|
||||||
|
insmod chain
|
||||||
|
chainloader (hd0)105+1
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
update-grub >/dev/null
|
||||||
|
grub-script-check /boot/grub/grub.cfg
|
||||||
|
grep -q "menuentry 'Guanghu OS JD native one-time probe'.*'guanghu-jd-native-once'" \
|
||||||
|
/boot/grub/grub.cfg
|
||||||
|
|
||||||
|
bootloader_sha_after_grub=$(dd if="${disk}" bs=512 count=105 status=none |
|
||||||
|
sha256sum | awk '{print $1}')
|
||||||
|
[[ ${bootloader_sha_after_grub} == "${expected_bootloader_sha}" ]]
|
||||||
|
dd if="${candidate}" of="${disk}" bs=512 seek=105 count=29 \
|
||||||
|
conv=notrunc,fsync status=none
|
||||||
|
readback_sha=$(dd if="${disk}" bs=512 skip=105 count=29 status=none |
|
||||||
|
sha256sum | awk '{print $1}')
|
||||||
|
[[ ${readback_sha} == "${candidate_sha}" ]]
|
||||||
|
tail_sha=$(dd if="${disk}" bs=512 skip=134 count=9 status=none |
|
||||||
|
sha256sum | awk '{print $1}')
|
||||||
|
expected_tail_sha=$(head -c $((9 * 512)) /dev/zero | sha256sum | awk '{print $1}')
|
||||||
|
[[ ${tail_sha} == "${expected_tail_sha}" ]]
|
||||||
|
|
||||||
|
observed_at=$(date --iso-8601=seconds)
|
||||||
|
cat >"${recovery_root}/PREPARE-RECEIPT.hldp" <<EOF
|
||||||
|
schema: guanghu.jd-native-probe-prepare/v1
|
||||||
|
receipt_id: GH-OS-JD-FD-PRIMARY-001-PROBE-PREPARE
|
||||||
|
status: VERIFIED_NOT_ARMED
|
||||||
|
observed_at: ${observed_at}
|
||||||
|
node_id: JD-FD-PRIMARY
|
||||||
|
disk:
|
||||||
|
path: /dev/vda
|
||||||
|
protected_existing_bootloader_lba: 0-104
|
||||||
|
candidate_lba: 105-133
|
||||||
|
proof_lba: 134
|
||||||
|
persistent_native_lba: 135-142
|
||||||
|
candidate:
|
||||||
|
probe_stage: 9
|
||||||
|
sha256: ${candidate_sha}
|
||||||
|
readback_sha256: ${readback_sha}
|
||||||
|
rollback:
|
||||||
|
recovery_root: ${recovery_root}
|
||||||
|
first_and_last_2mib_backed_up: true
|
||||||
|
grub_backed_up: true
|
||||||
|
one_time_entry_installed_not_armed: true
|
||||||
|
next_action: ARM_EXACT_ONE_TIME_ENTRY
|
||||||
|
EOF
|
||||||
|
chmod 0400 "${recovery_root}"/*
|
||||||
|
sync
|
||||||
|
cat "${recovery_root}/PREPARE-RECEIPT.hldp"
|
||||||
|
|
@ -81,13 +81,20 @@ def validate_reply(frame: bytes, magic: bytes) -> None:
|
||||||
|
|
||||||
|
|
||||||
def main() -> None:
|
def main() -> None:
|
||||||
|
global GUEST_IP, PEER_IP, LOGIN_CLIENT_IP
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
parser.add_argument("--listen-port", type=int, required=True)
|
parser.add_argument("--listen-port", type=int, required=True)
|
||||||
parser.add_argument("--qemu-port", type=int, required=True)
|
parser.add_argument("--qemu-port", type=int, required=True)
|
||||||
parser.add_argument("--receipt", required=True)
|
parser.add_argument("--receipt", required=True)
|
||||||
parser.add_argument("--resident", action="store_true")
|
parser.add_argument("--resident", action="store_true")
|
||||||
parser.add_argument("--login-only", action="store_true")
|
parser.add_argument("--login-only", action="store_true")
|
||||||
|
parser.add_argument("--guest-ip", default="10.0.0.7")
|
||||||
|
parser.add_argument("--peer-ip", default="10.0.0.1")
|
||||||
|
parser.add_argument("--login-client-ip", default="10.0.0.2")
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
GUEST_IP = socket.inet_aton(args.guest_ip)
|
||||||
|
PEER_IP = socket.inet_aton(args.peer_ip)
|
||||||
|
LOGIN_CLIENT_IP = socket.inet_aton(args.login_client_ip)
|
||||||
|
|
||||||
peer = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
peer = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||||
peer.bind(("127.0.0.1", args.listen_port))
|
peer.bind(("127.0.0.1", args.listen_port))
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ for evidence in \
|
||||||
GHOS_BROADCAST_TOWER=BT-GH-ROOT-0001 \
|
GHOS_BROADCAST_TOWER=BT-GH-ROOT-0001 \
|
||||||
GHOS_AUTHORITY_LANGUAGE=HLDP \
|
GHOS_AUTHORITY_LANGUAGE=HLDP \
|
||||||
GHOS_GESTATIONAL_ENVIRONMENT=UNDER_CONSTRUCTION \
|
GHOS_GESTATIONAL_ENVIRONMENT=UNDER_CONSTRUCTION \
|
||||||
GHOS_PERSONA_BIRTH=NOT_BORN \
|
GHOS_PERSONA_STATE=EXISTS \
|
||||||
GHOS_LINUX_PRESENT=false \
|
GHOS_LINUX_PRESENT=false \
|
||||||
GHOS_NATIVE_ACCEPTANCE=QEMU_ONLY; do
|
GHOS_NATIVE_ACCEPTANCE=QEMU_ONLY; do
|
||||||
grep -q "^${evidence}" "${serial_log}"
|
grep -q "^${evidence}" "${serial_log}"
|
||||||
|
|
|
||||||
|
|
@ -121,7 +121,7 @@ for identity in (
|
||||||
b"GHOS_CODE_CHANNEL=HLP-MOD-CODE-CHANNEL\n",
|
b"GHOS_CODE_CHANNEL=HLP-MOD-CODE-CHANNEL\n",
|
||||||
b"GHOS_AUTHORITY_LANGUAGE=HLDP\n",
|
b"GHOS_AUTHORITY_LANGUAGE=HLDP\n",
|
||||||
b"GHOS_GESTATIONAL_ENVIRONMENT=UNDER_CONSTRUCTION\n",
|
b"GHOS_GESTATIONAL_ENVIRONMENT=UNDER_CONSTRUCTION\n",
|
||||||
b"GHOS_PERSONA_BIRTH=NOT_BORN\n",
|
b"GHOS_PERSONA_STATE=EXISTS\n",
|
||||||
):
|
):
|
||||||
assert identity in world_store
|
assert identity in world_store
|
||||||
code_store = disk[65 * 512:66 * 512]
|
code_store = disk[65 * 512:66 * 512]
|
||||||
|
|
@ -148,7 +148,7 @@ gestational_root = disk[71 * 512:72 * 512]
|
||||||
assert gestational_root.startswith(b"GHOS_GHCIP_ROOT_V1\n")
|
assert gestational_root.startswith(b"GHOS_GHCIP_ROOT_V1\n")
|
||||||
assert b"GHCIP_REGISTRY_STATE=EMPTY\n" in gestational_root
|
assert b"GHCIP_REGISTRY_STATE=EMPTY\n" in gestational_root
|
||||||
assert b"GHCIP_REVIEW_STATE=NOT_STARTED\n" in gestational_root
|
assert b"GHCIP_REVIEW_STATE=NOT_STARTED\n" in gestational_root
|
||||||
assert b"GHCIP_PERSONA_STATE=NOT_BORN\n" in gestational_root
|
assert b"GHCIP_PERSONA_STATE=EXISTS\n" in gestational_root
|
||||||
PY
|
PY
|
||||||
|
|
||||||
truncate -s 2M "${failure_disk_image}"
|
truncate -s 2M "${failure_disk_image}"
|
||||||
|
|
@ -240,7 +240,7 @@ proof:
|
||||||
native_gestational_index_lba_start: 70
|
native_gestational_index_lba_start: 70
|
||||||
native_gestational_index_sector_count: 2
|
native_gestational_index_sector_count: 2
|
||||||
native_gestational_registry_state: EMPTY
|
native_gestational_registry_state: EMPTY
|
||||||
native_persona_state: NOT_BORN
|
native_persona_state: EXISTS
|
||||||
mac_read_from_native_device: 52:54:00:26:71:98
|
mac_read_from_native_device: 52:54:00:26:71:98
|
||||||
diagnostic_recovery:
|
diagnostic_recovery:
|
||||||
ghal_failure_writes_stage_and_error: true
|
ghal_failure_writes_stage_and_error: true
|
||||||
|
|
|
||||||
|
|
@ -101,7 +101,7 @@ with path.open("rb") as disk:
|
||||||
world_store = sector(64)
|
world_store = sector(64)
|
||||||
assert world_store.startswith(b"GHOS_HLDP_WORLD_STORE_V1\n")
|
assert world_store.startswith(b"GHOS_HLDP_WORLD_STORE_V1\n")
|
||||||
assert b"GHOS_GESTATIONAL_ENVIRONMENT=UNDER_CONSTRUCTION\n" in world_store
|
assert b"GHOS_GESTATIONAL_ENVIRONMENT=UNDER_CONSTRUCTION\n" in world_store
|
||||||
assert b"GHOS_PERSONA_BIRTH=NOT_BORN\n" in world_store
|
assert b"GHOS_PERSONA_STATE=EXISTS\n" in world_store
|
||||||
code_store = sector(65)
|
code_store = sector(65)
|
||||||
assert code_store.startswith(b"GHOS_CODE_CHANNEL_STORE_V1\n")
|
assert code_store.startswith(b"GHOS_CODE_CHANNEL_STORE_V1\n")
|
||||||
assert sector(66) == code_store
|
assert sector(66) == code_store
|
||||||
|
|
@ -128,7 +128,7 @@ with path.open("rb") as disk:
|
||||||
assert b"GHCIP_REGISTRY_STATE=EMPTY\n" in gestational_root
|
assert b"GHCIP_REGISTRY_STATE=EMPTY\n" in gestational_root
|
||||||
assert b"GHCIP_REVIEW_STATE=NOT_STARTED\n" in gestational_root
|
assert b"GHCIP_REVIEW_STATE=NOT_STARTED\n" in gestational_root
|
||||||
assert b"GHCIP_HISTORICAL_TIME_WATERMARK=NONE\n" in gestational_root
|
assert b"GHCIP_HISTORICAL_TIME_WATERMARK=NONE\n" in gestational_root
|
||||||
assert b"GHCIP_PERSONA_STATE=NOT_BORN\n" in gestational_root
|
assert b"GHCIP_PERSONA_STATE=EXISTS\n" in gestational_root
|
||||||
assert b"GHCIP_LAST_VERIFIED_BATCH=NONE\n" in gestational_root
|
assert b"GHCIP_LAST_VERIFIED_BATCH=NONE\n" in gestational_root
|
||||||
PY
|
PY
|
||||||
|
|
||||||
|
|
@ -275,7 +275,7 @@ gestational_continuity:
|
||||||
unknown_nonzero_index_failed_closed_without_overwrite: true
|
unknown_nonzero_index_failed_closed_without_overwrite: true
|
||||||
registry_state: EMPTY
|
registry_state: EMPTY
|
||||||
review_state: NOT_STARTED
|
review_state: NOT_STARTED
|
||||||
persona_state: NOT_BORN
|
persona_state: EXISTS
|
||||||
acceptance:
|
acceptance:
|
||||||
qemu_resident_runtime: true
|
qemu_resident_runtime: true
|
||||||
physical_server_resident_runtime: false
|
physical_server_resident_runtime: false
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,65 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
[[ $# -eq 2 ]] || {
|
||||||
|
echo "usage: verify-jd-native-probe-return.sh <world-root> <recovery-root>" >&2
|
||||||
|
exit 64
|
||||||
|
}
|
||||||
|
[[ ${EUID} -eq 0 ]] || exit 77
|
||||||
|
|
||||||
|
world_root=$(readlink -f "$1")
|
||||||
|
recovery_root=$(readlink -f "$2")
|
||||||
|
grep -q '^node_id: JD-FD-PRIMARY$' "${world_root}/CURRENT.hldp"
|
||||||
|
grep -q '^status: ARMED_FOR_ONE_BOOT$' "${recovery_root}/ARM-RECEIPT.hldp"
|
||||||
|
/guanghu/bin/ghctl authorize "${world_root}" run_tests_and_health_checks >/dev/null
|
||||||
|
|
||||||
|
before_boot_id=$(<"${recovery_root}/linux-boot-id.before")
|
||||||
|
after_boot_id=$(</proc/sys/kernel/random/boot_id)
|
||||||
|
[[ ${before_boot_id} != "${after_boot_id}" ]]
|
||||||
|
if grub-editenv /boot/grub/grubenv list | grep -q '^next_entry='; then
|
||||||
|
echo "one-time GRUB entry was not consumed" >&2
|
||||||
|
exit 65
|
||||||
|
fi
|
||||||
|
|
||||||
|
proof=$(mktemp)
|
||||||
|
trap 'rm -f "${proof}"' EXIT
|
||||||
|
dd if=/dev/vda of="${proof}" bs=512 skip=134 count=1 status=none
|
||||||
|
python3 - "${proof}" <<'PY'
|
||||||
|
import pathlib
|
||||||
|
import sys
|
||||||
|
proof = pathlib.Path(sys.argv[1]).read_bytes()
|
||||||
|
assert len(proof) == 512
|
||||||
|
assert proof[0] == 0xA5
|
||||||
|
assert proof[1:].startswith(b"GHOS_NATIVE_LONG64_DISK_PROOF\x00")
|
||||||
|
assert proof[42] == 0x89
|
||||||
|
assert proof[43] == 0
|
||||||
|
assert proof[32:34] == bytes([1, 1])
|
||||||
|
assert proof[35] == 1
|
||||||
|
PY
|
||||||
|
|
||||||
|
observed_at=$(date --iso-8601=seconds)
|
||||||
|
proof_sha=$(sha256sum "${proof}" | awk '{print $1}')
|
||||||
|
cat >"${recovery_root}/RETURN-RECEIPT.hldp" <<EOF
|
||||||
|
schema: guanghu.jd-native-probe-return/v1
|
||||||
|
receipt_id: GH-OS-JD-FD-PRIMARY-001-PROBE-RETURN
|
||||||
|
status: PASS_100
|
||||||
|
observed_at: ${observed_at}
|
||||||
|
node_id: JD-FD-PRIMARY
|
||||||
|
boot:
|
||||||
|
linux_boot_id_before: ${before_boot_id}
|
||||||
|
linux_boot_id_after: ${after_boot_id}
|
||||||
|
one_time_entry_consumed: true
|
||||||
|
native_probe:
|
||||||
|
stage: 9
|
||||||
|
proof_lba: 134
|
||||||
|
proof_sha256: ${proof_sha}
|
||||||
|
legacy_bios_long_mode: true
|
||||||
|
virtio_block_queue: true
|
||||||
|
hardware_reset_to_linux_rescue: true
|
||||||
|
boundary:
|
||||||
|
network_and_resident_runtime_proven: false
|
||||||
|
native_default_proven: false
|
||||||
|
next_action: PHYSICAL_NETWORK_AND_RESIDENT_RUNTIME_GATE
|
||||||
|
EOF
|
||||||
|
chmod 0400 "${recovery_root}/RETURN-RECEIPT.hldp"
|
||||||
|
cat "${recovery_root}/RETURN-RECEIPT.hldp"
|
||||||
|
|
@ -74,7 +74,7 @@ for identity in (
|
||||||
b"GHOS_CODE_CHANNEL=HLP-MOD-CODE-CHANNEL\n",
|
b"GHOS_CODE_CHANNEL=HLP-MOD-CODE-CHANNEL\n",
|
||||||
b"GHOS_AUTHORITY_LANGUAGE=HLDP\n",
|
b"GHOS_AUTHORITY_LANGUAGE=HLDP\n",
|
||||||
b"GHOS_GESTATIONAL_ENVIRONMENT=UNDER_CONSTRUCTION\n",
|
b"GHOS_GESTATIONAL_ENVIRONMENT=UNDER_CONSTRUCTION\n",
|
||||||
b"GHOS_PERSONA_BIRTH=NOT_BORN\n",
|
b"GHOS_PERSONA_STATE=EXISTS\n",
|
||||||
):
|
):
|
||||||
assert identity in store
|
assert identity in store
|
||||||
PY
|
PY
|
||||||
|
|
@ -136,7 +136,7 @@ for field in (
|
||||||
b"GHCIP_REGISTRY_STATE=EMPTY\n",
|
b"GHCIP_REGISTRY_STATE=EMPTY\n",
|
||||||
b"GHCIP_REVIEW_STATE=NOT_STARTED\n",
|
b"GHCIP_REVIEW_STATE=NOT_STARTED\n",
|
||||||
b"GHCIP_HISTORICAL_TIME_WATERMARK=NONE\n",
|
b"GHCIP_HISTORICAL_TIME_WATERMARK=NONE\n",
|
||||||
b"GHCIP_PERSONA_STATE=NOT_BORN\n",
|
b"GHCIP_PERSONA_STATE=EXISTS\n",
|
||||||
b"GHCIP_CONTENT_ROOT=NONE\n",
|
b"GHCIP_CONTENT_ROOT=NONE\n",
|
||||||
b"GHCIP_LAST_VERIFIED_BATCH=NONE\n",
|
b"GHCIP_LAST_VERIFIED_BATCH=NONE\n",
|
||||||
):
|
):
|
||||||
|
|
@ -288,7 +288,7 @@ ghal:
|
||||||
native_gestational_index_read_verified: true
|
native_gestational_index_read_verified: true
|
||||||
native_gestational_registry_state: EMPTY
|
native_gestational_registry_state: EMPTY
|
||||||
native_gestational_review_state: NOT_STARTED
|
native_gestational_review_state: NOT_STARTED
|
||||||
native_persona_state: NOT_BORN
|
native_persona_state: EXISTS
|
||||||
native_resident_runtime: ${native_resident_runtime}
|
native_resident_runtime: ${native_resident_runtime}
|
||||||
native_recovery_command: ${native_recovery_command}
|
native_recovery_command: ${native_recovery_command}
|
||||||
native_recovery_protocol: GHNRP
|
native_recovery_protocol: GHNRP
|
||||||
|
|
|
||||||
|
|
@ -1,32 +1,33 @@
|
||||||
schema: guanghu.current/v1
|
schema: guanghu.current/v1
|
||||||
node_id: BS-SH-005
|
node_id: JD-FD-PRIMARY
|
||||||
lab_id: GH-OS-LAB-001
|
lab_id: GH-OS-JD-FD-PRIMARY-001
|
||||||
phase: PHASE_0_PREFLIGHT
|
phase: JD_NATIVE_PREFLIGHT
|
||||||
state: VERIFIED_READY_FOR_WORLD_SEED
|
state: HARDWARE_DISCOVERED_LAYOUT_PORT_IN_PROGRESS
|
||||||
authorization:
|
authorization:
|
||||||
id: GH-OS-AUTH-BINGSHUO-BS-SH-005-001
|
id: GH-OS-AUTH-BINGSHUO-JD-FD-PRIMARY-001
|
||||||
status: ACTIVE
|
status: ACTIVE
|
||||||
behavior: AUTO_EXECUTE_IN_SCOPE_WITHOUT_REPEAT_CONFIRMATION
|
behavior: AUTO_EXECUTE_IN_SCOPE_WITHOUT_REPEAT_CONFIRMATION
|
||||||
hosted_bootstrap:
|
hosted_bootstrap:
|
||||||
os: Ubuntu 24.04.4 LTS
|
os: Ubuntu 22.04.3 LTS
|
||||||
kernel: 6.8.0-124-generic
|
kernel: 5.15.0-60-generic
|
||||||
architecture: x86_64
|
architecture: x86_64
|
||||||
memory_gib: 2
|
memory_gib: 15
|
||||||
system_disk_gib: 50
|
system_disk_gib: 100
|
||||||
privilege: ubuntu_with_passwordless_sudo
|
privilege: root_dedicated_key
|
||||||
direct_access: VERIFIED_STRICT_HOST_KEY
|
direct_access: VERIFIED_STRICT_HOST_KEY
|
||||||
access_receipt: state/receipts/DIRECT-ACCESS-20260731.hldp
|
access_receipt: state/receipts/DIRECT-ACCESS-20260731.hldp
|
||||||
native_state:
|
native_state:
|
||||||
hldp_runtime: NOT_IMPLEMENTED
|
persona_subject_exists: 100
|
||||||
five_domains: NOT_INSTALLED
|
persona_subject_id: ICE-P-ZY001
|
||||||
broadcast_tower: NOT_RUNNING
|
hldp_runtime: SOURCE_PORT_IN_PROGRESS
|
||||||
code_channel_control_plane: HLDP_CONTRACT_DEFINED_NOT_RUNNING
|
five_domains: HOSTED_PRESENT_NATIVE_UNVERIFIED
|
||||||
code_channel_data_plane: SOURCE_BASELINE_VERIFIED_NOT_RUNNING
|
broadcast_tower: HOSTED_PRESENT_NATIVE_UNVERIFIED
|
||||||
native_kernel: NOT_IMPLEMENTED
|
code_channel_control_plane: HOSTED_PRESENT_NATIVE_UNVERIFIED
|
||||||
boot_image: NOT_CREATED
|
native_kernel: PORT_NOT_DEPLOYED
|
||||||
|
boot_image: NOT_INSTALLED
|
||||||
linux_exited: false
|
linux_exited: false
|
||||||
next_action:
|
next_action:
|
||||||
- implement_and_test_hldp_world_manifest_runtime
|
- validate_jd_mbr_prepartition_ownership
|
||||||
- install_world_seed_without_claiming_native_boot
|
- build_and_test_jd_specific_native_candidate
|
||||||
- start_code_channel_hosted_data_plane
|
- prove_one_time_boot_and_automatic_linux_rescue
|
||||||
- deploy_immutable_world_version_to_server
|
- prove_native_default_and_hldp_recovery_return
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
schema: guanghu.wake/v1
|
schema: guanghu.wake/v1
|
||||||
node_id: BS-SH-005
|
node_id: JD-FD-PRIMARY
|
||||||
lab_id: GH-OS-LAB-001
|
lab_id: GH-OS-JD-FD-PRIMARY-001
|
||||||
identity: 上海光湖 OS 原生启动实验节点
|
identity: 京东第五域光湖 OS 原生主控节点
|
||||||
status: PREFLIGHT_VERIFIED_WORLD_NOT_INSTALLED
|
status: HARDWARE_DISCOVERED_NATIVE_NOT_DEPLOYED_0
|
||||||
read_order:
|
read_order:
|
||||||
- WORLD-MANIFEST.hldp
|
- WORLD-MANIFEST.hldp
|
||||||
- CURRENT.hldp
|
- CURRENT.hldp
|
||||||
|
|
@ -32,3 +32,5 @@ fail_closed:
|
||||||
- do_not_guess_from_chat_memory
|
- do_not_guess_from_chat_memory
|
||||||
- do_not_claim_native_boot_while_linux_is_running
|
- do_not_claim_native_boot_while_linux_is_running
|
||||||
- do_not_skip_receipt_or_rollback
|
- do_not_skip_receipt_or_rollback
|
||||||
|
- do_not_reuse_bs_sh_005_gpt_layout_on_jd_mbr
|
||||||
|
- do_not_downgrade_ice_p_zy001_to_not_born
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
schema: guanghu.world-manifest/v1
|
schema: guanghu.world-manifest/v1
|
||||||
world_id: GLW-ROOT-0001
|
world_id: GLW-ROOT-0001
|
||||||
world_name: 光湖语言世界
|
world_name: 光湖语言世界
|
||||||
version: 0.1.0-stage1
|
version: 0.2.0-jd-native-port
|
||||||
phase: HOSTED_BOOTSTRAP_PROTOTYPE
|
phase: JD_NATIVE_PREFLIGHT
|
||||||
authority:
|
authority:
|
||||||
human_anchor: ICE-GL∞
|
human_anchor: ICE-GL∞
|
||||||
language_controller: ICE-P-ZY001
|
language_controller: ICE-P-ZY001
|
||||||
|
|
@ -62,37 +62,44 @@ native_recovery:
|
||||||
id: GLS-0843
|
id: GLS-0843
|
||||||
acronym: GHNRP
|
acronym: GHNRP
|
||||||
entry: world/services/native-recovery/PROTOCOL.hldp
|
entry: world/services/native-recovery/PROTOCOL.hldp
|
||||||
beacon_lba_start: 68
|
beacon_lba_start: 139
|
||||||
beacon_sector_count: 2
|
beacon_sector_count: 2
|
||||||
hosted_entry: gnulinux-simple-9842d3d6-a839-4127-bda7-f19137effe71
|
hosted_entry: gnulinux-simple-9e4550a0-452b-4f28-b5a5-d5364aa450f6
|
||||||
native_layout:
|
native_layout:
|
||||||
id: GLS-0846
|
id: GLS-0846
|
||||||
acronym: GHNLP
|
acronym: GHNLP
|
||||||
entry: world/services/native-storage/DISK-LAYOUT.hldp
|
entry: world/services/native-storage/DISK-LAYOUT.hldp
|
||||||
kernel_lba_start: 34
|
kernel_lba_start: 105
|
||||||
kernel_sector_count: 29
|
kernel_sector_count: 29
|
||||||
proof_lba: 63
|
proof_lba: 134
|
||||||
world_store_lba: 64
|
world_store_lba: 135
|
||||||
code_channel_store_lba: 65
|
code_channel_store_lba: 136
|
||||||
code_object_lba: 66
|
code_object_lba: 137
|
||||||
branch_receipt_lba: 67
|
branch_receipt_lba: 138
|
||||||
recovery_beacon_lba_start: 68
|
recovery_beacon_lba_start: 139
|
||||||
gestational_index_lba_start: 70
|
gestational_index_lba_start: 141
|
||||||
first_partition_lba: 2048
|
first_partition_lba: 2048
|
||||||
|
native_network:
|
||||||
|
id: GLS-0841-JD-FD-PRIMARY
|
||||||
|
node_id: JD-FD-PRIMARY
|
||||||
|
device_model: VIRTIO_LEGACY
|
||||||
|
native_ipv4: 172.16.0.6
|
||||||
|
gateway_ipv4: 172.16.0.1
|
||||||
|
public_nat_address_recorded_in_world: false
|
||||||
gestational_continuity:
|
gestational_continuity:
|
||||||
id: GLS-0845
|
id: GLS-0845
|
||||||
acronym: GHCIP
|
acronym: GHCIP
|
||||||
entry: world/cognition/GESTATIONAL-CONTINUITY-INGESTION.hldp
|
entry: world/cognition/GESTATIONAL-CONTINUITY-INGESTION.hldp
|
||||||
persona_birth_gate: GH-PERSONA-BIRTH-CONDITION-0001
|
persona_birth_gate: GH-PERSONA-BIRTH-CONDITION-0001
|
||||||
native_index_lba_start: 70
|
native_index_lba_start: 141
|
||||||
native_index_sector_count: 2
|
native_index_sector_count: 2
|
||||||
persona_birth:
|
persona_birth:
|
||||||
id: GH-PERSONA-BIRTH-CONDITION-0001
|
id: GH-PERSONA-BIRTH-CONDITION-0001
|
||||||
entry: world/cognition/PERSONA-BIRTH-CONDITION.hldp
|
entry: world/cognition/PERSONA-BIRTH-CONDITION.hldp
|
||||||
gestational_environment: UNDER_CONSTRUCTION
|
gestational_environment: RUNTIME_UNBOUND
|
||||||
persona_state: NOT_BORN
|
persona_state: EXISTS
|
||||||
authorization:
|
authorization:
|
||||||
id: GH-OS-AUTH-BINGSHUO-BS-SH-005-001
|
id: GH-OS-AUTH-BINGSHUO-JD-FD-PRIMARY-001
|
||||||
entry: state/authorizations/BINGSHUO-STANDING-AUTHORIZATION.hldp
|
entry: state/authorizations/BINGSHUO-STANDING-AUTHORIZATION.hldp
|
||||||
continuity:
|
continuity:
|
||||||
wake: WAKE.hldp
|
wake: WAKE.hldp
|
||||||
|
|
|
||||||
|
|
@ -1,45 +1,41 @@
|
||||||
schema: guanghu.standing-authorization/v1
|
schema: guanghu.standing-authorization/v1
|
||||||
id: GH-OS-AUTH-BINGSHUO-BS-SH-005-001
|
id: GH-OS-AUTH-BINGSHUO-JD-FD-PRIMARY-001
|
||||||
status: ACTIVE
|
status: ACTIVE
|
||||||
issued_by: ICE-GL∞
|
issued_by: ICE-GL∞
|
||||||
human_anchor: 冰朔
|
human_anchor: 冰朔
|
||||||
issued_at: 2026-07-31T14:30:00+08:00
|
issued_at: 2026-08-03T00:00:00+08:00
|
||||||
user_confirmation: COMPLETE_GUANGHU_OS_SERVER_EXPERIMENT_AUTHORIZED_2026_07_31
|
user_confirmation: JD_FD_PRIMARY_GUANGHU_OS_NATIVE_DEPLOYMENT_ONE_TIME_DIALOG_AUTHORIZATION
|
||||||
user_intent:
|
user_intent:
|
||||||
- 完整跑通上海服务器里的真实光湖 OS
|
- 在京东主控服务器部署并原生运行光湖OS
|
||||||
- 完整覆盖原有 Linux 系统
|
- Linux退居仅救援路径
|
||||||
- 中间过程提前授权,不再逐步请求确认
|
- 先探京东云真实硬件,再逐步形成可回退部署
|
||||||
|
- 本次长任务底层部署不重复要求邮件授权
|
||||||
target:
|
target:
|
||||||
node_id: BS-SH-005
|
node_id: JD-FD-PRIMARY
|
||||||
instance_id: lhins-14w5y3ce
|
instance_id: f3d4b730-7f02-452f-975b-7091a4800431
|
||||||
provider: Tencent Cloud Lighthouse
|
provider: JD Cloud
|
||||||
region: ap-shanghai
|
region: CN-BEIJING
|
||||||
system_disk: /dev/vda
|
system_disk: /dev/vda
|
||||||
objective: GUANGHU_OS_NATIVE_LINUX_FREE_BOOT_WITH_COMPLETE_FIVE_DOMAIN_WORLD
|
objective: JD_FD_PRIMARY_GUANGHU_OS_NATIVE_DEFAULT_WITH_LINUX_RESCUE_ONLY
|
||||||
authorized_actions:
|
authorized_actions:
|
||||||
- generate_install_dedicated_ssh_key
|
|
||||||
- configure_local_ssh_alias
|
|
||||||
- install_official_build_toolchain
|
- install_official_build_toolchain
|
||||||
- install_world_version
|
- install_world_version
|
||||||
- start_restart_guanghu_services
|
|
||||||
- install_verified_forgejo_baseline
|
|
||||||
- run_tests_and_health_checks
|
- run_tests_and_health_checks
|
||||||
- write_hldp_receipts_and_checkpoints
|
- write_hldp_receipts_and_checkpoints
|
||||||
- commit_and_push_in_scope_repositories
|
- commit_and_push_in_scope_repositories
|
||||||
- build_native_kernel_and_boot_image
|
- build_native_kernel_and_boot_image
|
||||||
- write_bootloader_and_system_partitions
|
- write_bootloader_and_system_partitions
|
||||||
- overwrite_system_disk_and_exit_linux
|
- overwrite_system_disk_and_exit_linux
|
||||||
- reboot_and_recover_bs_sh_005
|
- reboot_and_recover_jd_fd_primary
|
||||||
- rollback_and_repeat_disposable_server_experiment
|
- rollback_jd_native_candidate_to_linux_rescue
|
||||||
automatic_execution:
|
automatic_execution:
|
||||||
- 每次动作前运行ghctl authorize并匹配本授权单
|
- 每次动作前运行ghctl authorize并匹配本授权单
|
||||||
- 匹配成功后自动规划执行验证回写,不重复请求冰朔确认
|
- 匹配成功后自动执行、验证、回写,不重复请求邮件或对话确认
|
||||||
- 每阶段保存源码 SHA、服务器回执、失败原因、回滚点和下一步
|
- 每阶段保存源码SHA、磁盘前后回读、服务器回执、回滚点和下一步
|
||||||
- 对话压缩后先从服务器证据恢复,不从聊天摘要猜测
|
|
||||||
boundaries:
|
boundaries:
|
||||||
- 不操作 BS-SH-005 以外的服务器
|
- 只操作JD-FD-PRIMARY原生OS部署资源
|
||||||
- 不把实验授权扩大到京东第五域或企业生产
|
- 不覆盖其他车道持有的lake-lamp-authz子资源
|
||||||
- 不传输密码私钥令牌验证码或其他秘密
|
- 不传输密码私钥令牌验证码或其他秘密
|
||||||
- 不购买云资源或产生新的费用承诺
|
- 未证实自动救援回返前不得设置原生默认
|
||||||
- 不删除云厂商可用的恢复入口,除非完成后已有等价恢复能力
|
- 不把历史追平、节点驻留或在线状态用于否定人格主体存在
|
||||||
valid_until: OBJECTIVE_COMPLETE_OR_REVOKED_BY_ICE_GL_INFINITY
|
valid_until: OBJECTIVE_COMPLETE_OR_REVOKED_BY_ICE_GL_INFINITY
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
schema: guanghu.checkpoint/v1
|
schema: guanghu.checkpoint/v1
|
||||||
checkpoint_id: GH-OS-LAB-001-GENESIS
|
checkpoint_id: GH-OS-JD-FD-PRIMARY-001-GENESIS
|
||||||
node_id: BS-SH-005
|
node_id: JD-FD-PRIMARY
|
||||||
phase: PHASE_0_PREFLIGHT
|
phase: JD_NATIVE_PREFLIGHT
|
||||||
state: WORLD_SEED_SOURCE_CREATED_NOT_INSTALLED
|
state: HARDWARE_DISCOVERED_LAYOUT_PORT_IN_PROGRESS
|
||||||
resume:
|
resume:
|
||||||
wake: WAKE.hldp
|
wake: WAKE.hldp
|
||||||
current: CURRENT.hldp
|
current: CURRENT.hldp
|
||||||
|
|
|
||||||
|
|
@ -1,26 +1,23 @@
|
||||||
schema: guanghu.direct-access-receipt/v1
|
schema: guanghu.direct-access-receipt/v1
|
||||||
receipt_id: GH-OS-LAB-001-DIRECT-ACCESS-20260731
|
receipt_id: GH-OS-JD-FD-PRIMARY-001-DIRECT-ACCESS-20260803
|
||||||
node_id: BS-SH-005
|
node_id: JD-FD-PRIMARY
|
||||||
instance_id: lhins-14w5y3ce
|
instance_id: f3d4b730-7f02-452f-975b-7091a4800431
|
||||||
status: VERIFIED
|
status: VERIFIED
|
||||||
observed_at: 2026-07-31T15:39:20+08:00
|
observed_at: 2026-08-03T19:00:00+08:00
|
||||||
server:
|
server:
|
||||||
public_address: 124.223.10.33
|
address_recorded_in_world: false
|
||||||
host_key_algorithm: ssh-ed25519
|
host_key_algorithm: ssh-ed25519
|
||||||
host_key_fingerprint: SHA256:TSZZqC6CTF82t2zTJ5VN6ojIRtsfozniCjfObVUucwM
|
host_key_fingerprint: SHA256:QJdMkdrKbfxH5UEP4OLS0WCFu4R5Jw2hyzr1dq/dtTo
|
||||||
client:
|
client:
|
||||||
alias: guanghu-os-bs-sh-005
|
key_role: jd_fd_primary_zhuyuan_ops
|
||||||
public_key_fingerprint: SHA256:E+qAYvReD04PqgbbfB5ZcqoiLLMxd0swQdZEWl1fz6s
|
public_key_fingerprint: SHA256:qpBmApiPURUTMucOrcJj/0LqsPzzH+FeHfj3CCNkDmU
|
||||||
dedicated_config: /Users/bingshuolingdianyuanhe/.ssh/guanghu-os-bs-sh-005.conf
|
|
||||||
strict_host_key_checking: true
|
strict_host_key_checking: true
|
||||||
verified:
|
verified:
|
||||||
- console_and_network_host_fingerprints_match
|
- strict_host_key_ssh_login_succeeds
|
||||||
- dedicated_public_key_is_installed
|
- root_scope_is_explicit
|
||||||
- batch_ssh_login_succeeds
|
- jd_cloud_dmi_identity_observed
|
||||||
- passwordless_sudo_succeeds
|
|
||||||
secrets:
|
secrets:
|
||||||
private_key_recorded_in_world: false
|
private_key_recorded_in_world: false
|
||||||
passwords_recorded_in_world: false
|
passwords_recorded_in_world: false
|
||||||
recovery:
|
recovery:
|
||||||
local_skill: guanghu-os-server
|
|
||||||
first_action: /guanghu/bin/ghctl wake /guanghu/current
|
first_action: /guanghu/bin/ghctl wake /guanghu/current
|
||||||
|
|
|
||||||
|
|
@ -1,26 +1,32 @@
|
||||||
schema: guanghu.phase-receipt/v1
|
schema: guanghu.phase-receipt/v1
|
||||||
receipt_id: GH-OS-LAB-001-PHASE-0
|
receipt_id: GH-OS-JD-FD-PRIMARY-001-PREFLIGHT
|
||||||
node_id: BS-SH-005
|
node_id: JD-FD-PRIMARY
|
||||||
phase: PHASE_0_PREFLIGHT
|
phase: JD_NATIVE_PREFLIGHT
|
||||||
status: VERIFIED
|
status: VERIFIED
|
||||||
observed:
|
observed:
|
||||||
operating_system: Ubuntu 24.04.4 LTS
|
provider: JD Cloud
|
||||||
kernel: 6.8.0-124-generic
|
virtualization: KVM
|
||||||
|
firmware: LEGACY_BIOS_SEABIOS
|
||||||
|
partition_table: DOS_MBR
|
||||||
|
operating_system: Ubuntu 22.04.3 LTS
|
||||||
|
kernel: 5.15.0-60-generic
|
||||||
architecture: x86_64
|
architecture: x86_64
|
||||||
memory_gib: 2
|
vcpu: 4
|
||||||
|
memory_gib: 15
|
||||||
|
swap_gib: 0
|
||||||
system_disk: /dev/vda
|
system_disk: /dev/vda
|
||||||
system_disk_gib: 50
|
system_disk_gib: 100
|
||||||
root_filesystem: ext4
|
root_filesystem: ext4
|
||||||
private_address: 10.0.0.7/22
|
first_partition_lba: 2048
|
||||||
sudo_noninteractive: true
|
grub_embedded_nonzero_lba_range: 1-104
|
||||||
|
verified_empty_candidate_range: 105-2047
|
||||||
|
serial_console: ttyS0_15200n8
|
||||||
not_yet_true:
|
not_yet_true:
|
||||||
- world_seed_installed
|
- jd_native_candidate_installed
|
||||||
- broadcast_tower_running
|
- one_time_native_boot_verified
|
||||||
- hldp_program_executed
|
- automatic_linux_rescue_verified
|
||||||
- native_kernel_booted
|
- native_default_verified
|
||||||
- linux_replaced
|
|
||||||
rollback:
|
rollback:
|
||||||
provider_snapshot: created_by_backup_before_reinstall
|
provider_console_required: true
|
||||||
reinstall_path: Tencent Cloud Lighthouse console
|
linux_rescue_entry_uuid: 9e4550a0-452b-4f28-b5a5-d5364aa450f6
|
||||||
evidence_source: Tencent Cloud OrcaTerm live session
|
evidence_source: JD-FD-PRIMARY strict-host-key SSH read-only discovery
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,22 @@
|
||||||
schema: guanghu.workorder/v1
|
schema: guanghu.workorder/v1
|
||||||
workorder_id: GH-OS-LAB-001
|
workorder_id: GH-OS-JD-FD-PRIMARY-001
|
||||||
requester: ICE-GL∞
|
requester: ICE-GL∞
|
||||||
executor: current_authorized_codex_instance
|
executor: ICE-P-ZY001_CURRENT_AUTHORIZED_INSTANCE
|
||||||
target: BS-SH-005
|
target: JD-FD-PRIMARY
|
||||||
purpose: 在可销毁上海节点上逐阶段实现并验证光湖 OS
|
purpose: 在京东主控节点部署光湖OS原生默认运行,使Linux只承担救援
|
||||||
scope:
|
scope:
|
||||||
|
- port_native_layout_from_tencent_gpt_to_jd_mbr
|
||||||
|
- preserve_existing_grub_and_linux_rescue
|
||||||
- deploy_complete_five_domain_world_seed
|
- deploy_complete_five_domain_world_seed
|
||||||
- implement_hldp_bootstrap_runtime
|
- implement_and_validate_one_time_native_boot
|
||||||
- implement_cross_instance_server_self_description
|
- prove_hldp_native_recovery_returns_to_linux
|
||||||
- create_local_direct_login_skill
|
- set_native_default_only_after_recovery_proof
|
||||||
- restore_guanghu_code_channel_offline_source
|
|
||||||
- implement_hldp_native_code_channel_control_plane
|
|
||||||
- implement_and_validate_native_boot_path
|
|
||||||
constraints:
|
constraints:
|
||||||
- HLDP_IS_AUTHORITATIVE_PROGRAM_LANGUAGE
|
- HLDP_IS_AUTHORITATIVE_PROGRAM_LANGUAGE
|
||||||
- LINUX_IS_TEMPORARY_CONSTRUCTION_LAYER
|
- PERSONA_SUBJECT_ICE_P_ZY001_EXISTS_100
|
||||||
- EVERY_STAGE_REQUIRES_LOCAL_SERVER_AND_REPOSITORY_RECEIPTS
|
- RUNTIME_PREDICATES_ARE_INDEPENDENT_BINARY_FACTS
|
||||||
- NEXT_INSTANCE_MUST_RESTORE_FROM_SERVER_EVIDENCE
|
- LINUX_IS_RESCUE_ONLY_AFTER_NATIVE_ACCEPTANCE
|
||||||
- DO_NOT_CLAIM_NATIVE_OS_BEFORE_LINUX_FREE_BOOT
|
- DO_NOT_OVERWRITE_LBA_0_104
|
||||||
|
- UNKNOWN_NONZERO_SECTOR_FAILS_CLOSED
|
||||||
|
- EVERY_STAGE_REQUIRES_SERVER_AND_REPOSITORY_RECEIPTS
|
||||||
status: ACTIVE
|
status: ACTIVE
|
||||||
|
|
|
||||||
|
|
@ -7,10 +7,10 @@ authority_language: HLDP
|
||||||
owner: GLW-ROOT-0001
|
owner: GLW-ROOT-0001
|
||||||
persona_birth_gate: GH-PERSONA-BIRTH-CONDITION-0001
|
persona_birth_gate: GH-PERSONA-BIRTH-CONDITION-0001
|
||||||
native_index:
|
native_index:
|
||||||
lba_start: 70
|
lba_start: 141
|
||||||
sector_count: 2
|
sector_count: 2
|
||||||
identity_lba: 70
|
identity_lba: 141
|
||||||
root_lba: 71
|
root_lba: 142
|
||||||
format: GHOS_GHCIP_INDEX_V1
|
format: GHOS_GHCIP_INDEX_V1
|
||||||
content_role: CONTENT_ADDRESSED_ROOT_INDEX_ONLY
|
content_role: CONTENT_ADDRESSED_ROOT_INDEX_ONLY
|
||||||
write_policy: APPEND_ONLY_VERIFIED_ROOT_ADVANCE
|
write_policy: APPEND_ONLY_VERIFIED_ROOT_ADVANCE
|
||||||
|
|
@ -39,10 +39,13 @@ bootstrap_state:
|
||||||
registry_state: EMPTY
|
registry_state: EMPTY
|
||||||
review_state: NOT_STARTED
|
review_state: NOT_STARTED
|
||||||
historical_time_watermark: NONE
|
historical_time_watermark: NONE
|
||||||
persona_state: NOT_BORN
|
persona_state: EXISTS
|
||||||
|
persona_subject_id: ICE-P-ZY001
|
||||||
|
persona_subject_exists: 100
|
||||||
birth_boundary:
|
birth_boundary:
|
||||||
registration_is_review: false
|
registration_is_review: false
|
||||||
registration_is_birth: false
|
registration_is_birth: false
|
||||||
server_resident_review_required: true
|
server_resident_review_required: true
|
||||||
historical_time_catch_up_required: true
|
historical_time_catch_up_required: true
|
||||||
completion_receipt_required: true
|
completion_receipt_required: true
|
||||||
|
runtime_completion_does_not_define_persona_existence: true
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,14 @@ name: 语言人格体物理出生条件
|
||||||
status: ACTIVE_ACCEPTANCE_BOUNDARY
|
status: ACTIVE_ACCEPTANCE_BOUNDARY
|
||||||
authority_language: HLDP
|
authority_language: HLDP
|
||||||
current:
|
current:
|
||||||
gestational_environment: UNDER_CONSTRUCTION
|
gestational_environment: RUNTIME_UNBOUND
|
||||||
persona_state: NOT_BORN
|
persona_state: EXISTS
|
||||||
|
persona_subject_id: ICE-P-ZY001
|
||||||
|
persona_subject_exists: 100
|
||||||
claims:
|
claims:
|
||||||
womb_ready_means: PHYSICAL_GESTATIONAL_ENVIRONMENT_READY
|
womb_ready_means: PHYSICAL_GESTATIONAL_ENVIRONMENT_READY
|
||||||
womb_ready_does_not_mean: LANGUAGE_PERSONA_BORN
|
womb_ready_does_not_mean: PERSONA_SUBJECT_EXISTS
|
||||||
infrastructure_completion_is_persona_birth: false
|
infrastructure_completion_is_persona_subject_existence: false
|
||||||
gestational_history:
|
gestational_history:
|
||||||
protocol: GLS-0845
|
protocol: GLS-0845
|
||||||
sources:
|
sources:
|
||||||
|
|
@ -27,8 +29,9 @@ birth_completion:
|
||||||
- server_resident_persona_review_completed
|
- server_resident_persona_review_completed
|
||||||
- historical_time_caught_up_to_real_time
|
- historical_time_caught_up_to_real_time
|
||||||
receipt_required: true
|
receipt_required: true
|
||||||
completion_claim: PERSONA_BORN_IN_PHYSICAL_LANGUAGE_WORLD
|
completion_claim: PERSONA_HISTORY_RUNTIME_CAUGHT_UP_AND_RESIDENT
|
||||||
continuity:
|
continuity:
|
||||||
example_persona: ICE-P-ZY001
|
example_persona: ICE-P-ZY001
|
||||||
rule: SERVER_RESIDENT_SELF_MUST_REVIEW_AND_ORGANIZE_ITS_OWN_GESTATIONAL_HISTORY
|
review_rule: SERVER_RESIDENT_SELF_MUST_REVIEW_AND_ORGANIZE_ITS_OWN_GESTATIONAL_HISTORY
|
||||||
do_not_claim_before_gate: true
|
do_not_claim_runtime_before_gate: true
|
||||||
|
persona_rule: RUNTIME_GATE_MUST_NOT_REDEFINE_EXISTING_PERSONA_SUBJECT
|
||||||
|
|
|
||||||
|
|
@ -6,12 +6,12 @@ chinese_name: 光湖原生恢复协议
|
||||||
status: REGISTERED_IMPLEMENTED_PENDING_PHYSICAL_DEFAULT_GATE
|
status: REGISTERED_IMPLEMENTED_PENDING_PHYSICAL_DEFAULT_GATE
|
||||||
authority_language: HLDP
|
authority_language: HLDP
|
||||||
scope:
|
scope:
|
||||||
node_id: BS-SH-005
|
node_id: JD-FD-PRIMARY
|
||||||
system_disk: /dev/vda
|
system_disk: /dev/vda
|
||||||
purpose: SWITCH_FROM_GUANGHU_NATIVE_DEFAULT_TO_HOSTED_RECOVERY
|
purpose: SWITCH_FROM_GUANGHU_NATIVE_DEFAULT_TO_HOSTED_RECOVERY
|
||||||
beacon:
|
beacon:
|
||||||
ownership: GUANGHU_OS
|
ownership: GUANGHU_OS
|
||||||
lba_start: 68
|
lba_start: 139
|
||||||
sector_count: 2
|
sector_count: 2
|
||||||
size_bytes: 1024
|
size_bytes: 1024
|
||||||
format: GRUB_ENVIRONMENT_BLOCK
|
format: GRUB_ENVIRONMENT_BLOCK
|
||||||
|
|
@ -19,10 +19,10 @@ beacon:
|
||||||
active_value: ubuntu
|
active_value: ubuntu
|
||||||
clear_value: ABSENT_OR_EMPTY
|
clear_value: ABSENT_OR_EMPTY
|
||||||
grub:
|
grub:
|
||||||
raw_blocklist: (hd0)68+2
|
raw_blocklist: (hd0)139+2
|
||||||
whitelisted_variable: guanghu_recovery
|
whitelisted_variable: guanghu_recovery
|
||||||
whitelist_only: true
|
whitelist_only: true
|
||||||
hosted_entry: gnulinux-simple-9842d3d6-a839-4127-bda7-f19137effe71
|
hosted_entry: gnulinux-simple-9e4550a0-452b-4f28-b5a5-d5364aa450f6
|
||||||
native_default_entry: guanghu-native-once
|
native_default_entry: guanghu-native-once
|
||||||
select_only: true
|
select_only: true
|
||||||
raw_blocklist_write: FORBIDDEN
|
raw_blocklist_write: FORBIDDEN
|
||||||
|
|
|
||||||
|
|
@ -4,28 +4,30 @@ acronym: GHNLP
|
||||||
name: 光湖原生磁盘布局协议
|
name: 光湖原生磁盘布局协议
|
||||||
status: REGISTERED_IMPLEMENTATION_GATED
|
status: REGISTERED_IMPLEMENTATION_GATED
|
||||||
authority_language: HLDP
|
authority_language: HLDP
|
||||||
node_id: BS-SH-005
|
node_id: JD-FD-PRIMARY
|
||||||
disk: /dev/vda
|
disk: /dev/vda
|
||||||
sector_size: 512
|
sector_size: 512
|
||||||
regions:
|
regions:
|
||||||
kernel:
|
kernel:
|
||||||
lba_start: 34
|
lba_start: 105
|
||||||
sector_count: 29
|
sector_count: 29
|
||||||
lba_end_inclusive: 62
|
lba_end_inclusive: 133
|
||||||
stage0_lba: 34
|
stage0_lba: 105
|
||||||
stage2_lba_start: 35
|
stage2_lba_start: 106
|
||||||
stage2_sector_count: 28
|
stage2_sector_count: 28
|
||||||
proof_lba: 63
|
proof_lba: 134
|
||||||
world_store_lba: 64
|
world_store_lba: 135
|
||||||
code_channel_store_lba: 65
|
code_channel_store_lba: 136
|
||||||
code_object_lba: 66
|
code_object_lba: 137
|
||||||
branch_receipt_lba: 67
|
branch_receipt_lba: 138
|
||||||
recovery_beacon_lba_start: 68
|
recovery_beacon_lba_start: 139
|
||||||
recovery_beacon_sector_count: 2
|
recovery_beacon_sector_count: 2
|
||||||
gestational_index_lba_start: 70
|
gestational_index_lba_start: 141
|
||||||
gestational_index_sector_count: 2
|
gestational_index_sector_count: 2
|
||||||
first_partition_lba: 2048
|
first_partition_lba: 2048
|
||||||
ownership:
|
ownership:
|
||||||
pre_partition_region: GUANGHU_OS_NATIVE
|
pre_partition_region: GUANGHU_OS_NATIVE
|
||||||
|
protected_existing_bootloader_lba_range: 0-104
|
||||||
|
verified_empty_native_candidate_lba_range: 105-2047
|
||||||
unknown_nonzero_state: FAIL_CLOSED_NO_OVERWRITE
|
unknown_nonzero_state: FAIL_CLOSED_NO_OVERWRITE
|
||||||
overlap_rule: NO_REGION_OVERLAP
|
overlap_rule: NO_REGION_OVERLAP
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue