diff --git a/docs/codex/pr-train-state.json b/docs/codex/pr-train-state.json index afae07659..53c27a176 100644 --- a/docs/codex/pr-train-state.json +++ b/docs/codex/pr-train-state.json @@ -88961,11 +88961,90 @@ "transitions": [{"at": "2026-07-12T17:30:00+08:00", "from": "user_authorized", "to": "in_progress", "note": "Started a read-only EN/ZH post-publish warmup command and A/T projection alias deduplication. No production warmup, CMS/DB mutation, import, staging, or deploy is authorized."}, {"at": "2026-07-12T18:00:00+08:00", "from": "in_progress", "to": "local_checks_passed", "note": "Focused and full backend validation passed. The temporary local baseline probe measured 49,538-byte EN and 89,363-byte ZH INTJ-A detail payloads; no production warmup or content mutation occurred. Validation-generated Big Five artifacts were restored."}, {"at": "2026-07-12T18:05:00+08:00", "from": "local_checks_passed", "to": "github_checks_pending", "note": "Committed and pushed the exact seven-path scope and opened PR #3018; required checks are pending."}, {"at": "2026-07-12T18:15:00+08:00", "from": "github_checks_pending", "to": "github_checks_retry_pending", "note": "Inspected verify-bigfive: 1206 tests passed and the sole failure was the runtime classifier not recognizing the new warmup command and its exact two-line Kernel registration. Restored Pint import churn and added narrow classifier coverage for only those paths/lines."}, {"at": "2026-07-12T18:25:00+08:00", "from": "github_checks_retry_pending", "to": "ready_to_merge", "note": "All 9 required checks passed and the exact eight-path scope remained clean and mergeable."}] }, "ENNEAGRAM-LLMS-FULL-RELEASE-01": { - "id": "ENNEAGRAM-LLMS-FULL-RELEASE-01", "repo": "fap-api", "title": "ENNEAGRAM-LLMS-FULL-RELEASE-01: release approved Enneagram llms-full assets", "base": "main", "branch": "codex/enneagram-llms-full-release-01", "depends_on": ["ENNEAGRAM-LLMS-FULL-RELEASE-READINESS-02"], - "status": "pending_dependency", "commit_sha": null, "pr_url": null, "failure_reason": null, "merged_at": null, "remote_branch_deleted": false, "local_cleanup_executed": false, - "production_write_execution": true, "database_mutation": true, "cms_mutation": true, "search_channel_action": false, "llms_release_execution": true, "deploy_allowed": false, - "checks": {"authorization": {"status": "pending_exact_production_authorization", "evidence": "Manifest initialization is authorized; exact deployed-SHA authorization and a green llms-full readiness decision are mandatory for any feed write or cache warm."}}, - "scope_validation": {"allowed_paths_only": false, "local_validation_passed": false, "github_checks_green": false, "post_merge_revalidated": false}, - "transitions": [{"at": "2026-07-11T19:03:22Z", "from": "unregistered", "to": "pending_dependency", "note": "Initialized with llms.txt unchanged and Search untouched unless separately authorized."}] + "id": "ENNEAGRAM-LLMS-FULL-RELEASE-01", + "repo": "fap-api", + "title": "ENNEAGRAM-LLMS-FULL-RELEASE-01: release approved Enneagram llms-full assets", + "base": "main", + "branch": "codex/enneagram-llms-full-release-01", + "depends_on": [ + "ENNEAGRAM-LLMS-FULL-RELEASE-READINESS-02" + ], + "status": "ready_to_merge", + "commit_sha": "346bdeb68", + "pr_url": "https://github.com/fermatmind/fap-api/pull/3026", + "failure_reason": null, + "merged_at": null, + "remote_branch_deleted": false, + "local_cleanup_executed": false, + "production_write_execution": false, + "database_mutation": false, + "cms_mutation": false, + "search_channel_action": false, + "llms_release_execution": false, + "deploy_allowed": false, + "checks": { + "authorization": { + "status": "pass_used", + "evidence": "User previously authorized ENNEAGRAM-LLMS-FULL-RELEASE-01 for deployed backend SHA 4707c3396a9fda1377df0cc2e31877d33b6757ba. This closeout PR performs readback/ledger only and does not perform new eligibility writes or cache warm." + }, + "dependency": { + "status": "pass", + "evidence": "ENNEAGRAM-LLMS-FULL-RELEASE-READINESS-02 is merged at 996a04993aa907bb1e5fc770241af0c802f73690 with GO_FOR_SEPARATE_LLMS_FULL_AUTHORIZATION; ENNEAGRAM-LLMS-TXT-PRODUCTION-REVALIDATION-01 and EN13 evidence CMS refresh are already complete." + }, + "fap_web_cache_ops": { + "status": "pass", + "evidence": "LLMS Feed Cache Ops run 29198788071 succeeded on fap-web main 54eae3332bfbd4374ea0fc3da1ff4eb6751ed786; remote frontend SHA was 11826dc0034ad111a0456f397a104a332c9b8b08, PM2 was 4/4 online, /llms-full.txt count was 116 and mode complete, side effects were all 0." + }, + "production_readback": { + "status": "pass", + "evidence": "generated/enneagram-llms-full-release/release-readback.json records /llms.txt unique Enneagram canonical=116, /llms-full.txt unique Enneagram canonical=116, llms-full mode=complete, exact locale/entity distribution, zero blocking duplicate/malformed/non-apex/forbidden/private counters, and side effects all 0." + }, + "local_validation": { + "status": "pass", + "evidence": "Passed manifest YAML parse, pr-train-state JSON parse, release-readback JSON parse, exact readback assertions for /llms.txt=116, /llms-full.txt=116, complete mode, expected locale/entity distribution, zero blocking safety counters, side effects all 0, changed-file allowed scope validation, and git diff --check." + }, + "github_checks": { + "status": "pass", + "evidence": "PR #3026 required checks passed: hygiene, supply-chain, content-pack-build-validate, verify-bigfive, verify-mbti-legacy, verify-mbti-v2, Semgrep blocking secrets, semgrep sarif upload, and Semgrep OSS." + } + }, + "scope_validation": { + "allowed_paths_only": true, + "local_validation_passed": true, + "github_checks_green": true, + "post_merge_revalidated": false + }, + "transitions": [ + { + "at": "2026-07-11T19:03:22Z", + "from": "unregistered", + "to": "pending_dependency", + "note": "Initialized with llms.txt unchanged and Search untouched unless separately authorized." + }, + { + "at": "2026-07-12T15:51:05.779782Z", + "from": "pending_dependency", + "to": "local_checks_passed", + "note": "Completed readback-only llms-full release closeout from isolated fap-api worktree. fap-web cache-only Ops artifact succeeded, live /llms.txt and /llms-full.txt both show 116 unique Enneagram canonicals, llms-full mode is complete, blocking safety counters are zero, and no deploy/CMS/eligibility/Search/IndexNow action occurred." + }, + { + "at": "2026-07-12T15:51:42.619095Z", + "from": "local_checks_passed", + "to": "local_checks_passed", + "note": "Local release closeout validation passed: YAML/JSON/report assertions, allowed-path scope check, and git diff --check all passed. Ready for commit and PR." + }, + { + "at": "2026-07-12T15:52:39.593406Z", + "from": "local_checks_passed", + "to": "github_checks_pending", + "note": "Opened PR #3026 from scoped readback/ledger branch; required GitHub checks are pending. No deploy, CMS write, eligibility write, Search Queue, IndexNow, or backend cache warm was triggered." + }, + { + "at": "2026-07-12T15:58:49.274045Z", + "from": "github_checks_pending", + "to": "ready_to_merge", + "note": "All required GitHub checks passed for PR #3026; PR body, changed files, scope, and merge policy were revalidated. Ready to squash merge. No production action occurred in this PR." + } + ] } } diff --git a/docs/codex/pr-train.yaml b/docs/codex/pr-train.yaml index cd86aaaad..a375e0afd 100644 --- a/docs/codex/pr-train.yaml +++ b/docs/codex/pr-train.yaml @@ -41388,7 +41388,7 @@ prs: branch: codex/enneagram-llms-full-release-01 title: "ENNEAGRAM-LLMS-FULL-RELEASE-01: release approved Enneagram llms-full assets" train_scope: enneagram_llms_full_release - status: pending_dependency + status: ready_to_merge scope: - Only after a green llms-full readiness decision and separate exact deployed-SHA authorization, release approved llms-full assets, warm only the authorized feed cache, and record production readback. allowed_paths: [docs/codex/pr-train.yaml, docs/codex/pr-train-state.json, generated/enneagram-llms-full-release/**, generated/pr-train-sidecar-issues/**] diff --git a/generated/enneagram-llms-full-release/release-readback.json b/generated/enneagram-llms-full-release/release-readback.json new file mode 100644 index 000000000..9938fd0b0 --- /dev/null +++ b/generated/enneagram-llms-full-release/release-readback.json @@ -0,0 +1,375 @@ +{ + "schema_version": "enneagram-llms-full-release-readback.v1", + "checked_at": "2026-07-12T15:49:51.204248Z", + "task_id": "ENNEAGRAM-LLMS-FULL-RELEASE-01", + "conclusion": "COMPLETED_PRODUCTION_READBACK", + "target_host": "https://fermatmind.com", + "authorized_backend_deployed_sha": "4707c3396a9fda1377df0cc2e31877d33b6757ba", + "frontend_cache_ops": { + "repo": "fap-web", + "workflow": "LLMS Feed Cache Ops", + "run_id": 29198788071, + "workflow_head_sha": "54eae3332bfbd4374ea0fc3da1ff4eb6751ed786", + "expected_frontend_sha": "11826dc0034ad111a0456f397a104a332c9b8b08", + "remote_head": "11826dc0034ad111a0456f397a104a332c9b8b08", + "pm2_after": { + "app": "fap-web", + "count": 4, + "online": 4 + }, + "result": "PASS", + "artifact_summary_sha256": "83bcf833bd77b19566de62b3cec05f4726485bc6fb771e196e26a7371f8eaf88", + "side_effects": { + "deploy": 0, + "git_pull": 0, + "git_reset": 0, + "cms": 0, + "search_queue": 0, + "indexnow": 0, + "secrets_or_permissions_mutation": 0 + } + }, + "prerequisites": { + "llms_full_readiness": { + "status": "pass", + "pr": "#3023", + "merge_sha": "996a04993aa907bb1e5fc770241af0c802f73690", + "decision": "GO_FOR_SEPARATE_LLMS_FULL_AUTHORIZATION" + }, + "llms_txt_production_revalidation": { + "status": "pass", + "pr": "#3022", + "merge_sha": "1ea5c648eebdaafa10efc591a8d88f8d9a429a1e" + }, + "en13_evidence_cms_refresh": { + "status": "pass", + "evidence": "Production Ops run 29189506320 returned already_refreshed 26/26 with zero issues." + } + }, + "feeds": { + "llms_txt": { + "status": 200, + "cache_control": "public, s-maxage=3600, stale-while-revalidate=86400", + "llms_full_mode": "", + "bytes": 180185, + "sha256": "100d07764bed497bde41f0d630a56846bcd9fd8c9ac866b163f6a16e8f6b0b2d", + "unique_canonical_count": 116, + "raw_match_count": 116, + "canonical_set_sha256": "d555430ae2c64c238c0183bde35fcde415675fea0fc38933f8b1081c0459f284", + "raw_duplicate_url_count": 0, + "raw_duplicate_occurrence_total": 0, + "blocking_duplicate_canonical_count": 0, + "malformed_count": 0, + "non_apex_count": 0, + "forbidden_count": 0, + "unknown_entity_count": 0, + "distribution": { + "locale": { + "en": 58, + "zh": 58 + }, + "entity_type": { + "hub": 2, + "center": 6, + "core_type": 18, + "wing": 36, + "instinctual_subtype": 54 + } + }, + "raw_duplicates_are_advisory": false, + "canonical_urls": [ + "https://fermatmind.com/en/personality/enneagram", + "https://fermatmind.com/en/personality/enneagram/centers/gut", + "https://fermatmind.com/en/personality/enneagram/centers/head", + "https://fermatmind.com/en/personality/enneagram/centers/heart", + "https://fermatmind.com/en/personality/enneagram/type-1", + "https://fermatmind.com/en/personality/enneagram/type-1/instincts/one-to-one", + "https://fermatmind.com/en/personality/enneagram/type-1/instincts/self-preservation", + "https://fermatmind.com/en/personality/enneagram/type-1/instincts/social", + "https://fermatmind.com/en/personality/enneagram/type-2", + "https://fermatmind.com/en/personality/enneagram/type-2/instincts/one-to-one", + "https://fermatmind.com/en/personality/enneagram/type-2/instincts/self-preservation", + "https://fermatmind.com/en/personality/enneagram/type-2/instincts/social", + "https://fermatmind.com/en/personality/enneagram/type-3", + "https://fermatmind.com/en/personality/enneagram/type-3/instincts/one-to-one", + "https://fermatmind.com/en/personality/enneagram/type-3/instincts/self-preservation", + "https://fermatmind.com/en/personality/enneagram/type-3/instincts/social", + "https://fermatmind.com/en/personality/enneagram/type-4", + "https://fermatmind.com/en/personality/enneagram/type-4/instincts/one-to-one", + "https://fermatmind.com/en/personality/enneagram/type-4/instincts/self-preservation", + "https://fermatmind.com/en/personality/enneagram/type-4/instincts/social", + "https://fermatmind.com/en/personality/enneagram/type-5", + "https://fermatmind.com/en/personality/enneagram/type-5/instincts/one-to-one", + "https://fermatmind.com/en/personality/enneagram/type-5/instincts/self-preservation", + "https://fermatmind.com/en/personality/enneagram/type-5/instincts/social", + "https://fermatmind.com/en/personality/enneagram/type-6", + "https://fermatmind.com/en/personality/enneagram/type-6/instincts/one-to-one", + "https://fermatmind.com/en/personality/enneagram/type-6/instincts/self-preservation", + "https://fermatmind.com/en/personality/enneagram/type-6/instincts/social", + "https://fermatmind.com/en/personality/enneagram/type-7", + "https://fermatmind.com/en/personality/enneagram/type-7/instincts/one-to-one", + "https://fermatmind.com/en/personality/enneagram/type-7/instincts/self-preservation", + "https://fermatmind.com/en/personality/enneagram/type-7/instincts/social", + "https://fermatmind.com/en/personality/enneagram/type-8", + "https://fermatmind.com/en/personality/enneagram/type-8/instincts/one-to-one", + "https://fermatmind.com/en/personality/enneagram/type-8/instincts/self-preservation", + "https://fermatmind.com/en/personality/enneagram/type-8/instincts/social", + "https://fermatmind.com/en/personality/enneagram/type-9", + "https://fermatmind.com/en/personality/enneagram/type-9/instincts/one-to-one", + "https://fermatmind.com/en/personality/enneagram/type-9/instincts/self-preservation", + "https://fermatmind.com/en/personality/enneagram/type-9/instincts/social", + "https://fermatmind.com/en/personality/enneagram/wings/1w2", + "https://fermatmind.com/en/personality/enneagram/wings/1w9", + "https://fermatmind.com/en/personality/enneagram/wings/2w1", + "https://fermatmind.com/en/personality/enneagram/wings/2w3", + "https://fermatmind.com/en/personality/enneagram/wings/3w2", + "https://fermatmind.com/en/personality/enneagram/wings/3w4", + "https://fermatmind.com/en/personality/enneagram/wings/4w3", + "https://fermatmind.com/en/personality/enneagram/wings/4w5", + "https://fermatmind.com/en/personality/enneagram/wings/5w4", + "https://fermatmind.com/en/personality/enneagram/wings/5w6", + "https://fermatmind.com/en/personality/enneagram/wings/6w5", + "https://fermatmind.com/en/personality/enneagram/wings/6w7", + "https://fermatmind.com/en/personality/enneagram/wings/7w6", + "https://fermatmind.com/en/personality/enneagram/wings/7w8", + "https://fermatmind.com/en/personality/enneagram/wings/8w7", + "https://fermatmind.com/en/personality/enneagram/wings/8w9", + "https://fermatmind.com/en/personality/enneagram/wings/9w1", + "https://fermatmind.com/en/personality/enneagram/wings/9w8", + "https://fermatmind.com/zh/personality/enneagram", + "https://fermatmind.com/zh/personality/enneagram/centers/gut", + "https://fermatmind.com/zh/personality/enneagram/centers/head", + "https://fermatmind.com/zh/personality/enneagram/centers/heart", + "https://fermatmind.com/zh/personality/enneagram/type-1", + "https://fermatmind.com/zh/personality/enneagram/type-1/instincts/one-to-one", + "https://fermatmind.com/zh/personality/enneagram/type-1/instincts/self-preservation", + "https://fermatmind.com/zh/personality/enneagram/type-1/instincts/social", + "https://fermatmind.com/zh/personality/enneagram/type-2", + "https://fermatmind.com/zh/personality/enneagram/type-2/instincts/one-to-one", + "https://fermatmind.com/zh/personality/enneagram/type-2/instincts/self-preservation", + "https://fermatmind.com/zh/personality/enneagram/type-2/instincts/social", + "https://fermatmind.com/zh/personality/enneagram/type-3", + "https://fermatmind.com/zh/personality/enneagram/type-3/instincts/one-to-one", + "https://fermatmind.com/zh/personality/enneagram/type-3/instincts/self-preservation", + "https://fermatmind.com/zh/personality/enneagram/type-3/instincts/social", + "https://fermatmind.com/zh/personality/enneagram/type-4", + "https://fermatmind.com/zh/personality/enneagram/type-4/instincts/one-to-one", + "https://fermatmind.com/zh/personality/enneagram/type-4/instincts/self-preservation", + "https://fermatmind.com/zh/personality/enneagram/type-4/instincts/social", + "https://fermatmind.com/zh/personality/enneagram/type-5", + "https://fermatmind.com/zh/personality/enneagram/type-5/instincts/one-to-one", + "https://fermatmind.com/zh/personality/enneagram/type-5/instincts/self-preservation", + "https://fermatmind.com/zh/personality/enneagram/type-5/instincts/social", + "https://fermatmind.com/zh/personality/enneagram/type-6", + "https://fermatmind.com/zh/personality/enneagram/type-6/instincts/one-to-one", + "https://fermatmind.com/zh/personality/enneagram/type-6/instincts/self-preservation", + "https://fermatmind.com/zh/personality/enneagram/type-6/instincts/social", + "https://fermatmind.com/zh/personality/enneagram/type-7", + "https://fermatmind.com/zh/personality/enneagram/type-7/instincts/one-to-one", + "https://fermatmind.com/zh/personality/enneagram/type-7/instincts/self-preservation", + "https://fermatmind.com/zh/personality/enneagram/type-7/instincts/social", + "https://fermatmind.com/zh/personality/enneagram/type-8", + "https://fermatmind.com/zh/personality/enneagram/type-8/instincts/one-to-one", + "https://fermatmind.com/zh/personality/enneagram/type-8/instincts/self-preservation", + "https://fermatmind.com/zh/personality/enneagram/type-8/instincts/social", + "https://fermatmind.com/zh/personality/enneagram/type-9", + "https://fermatmind.com/zh/personality/enneagram/type-9/instincts/one-to-one", + "https://fermatmind.com/zh/personality/enneagram/type-9/instincts/self-preservation", + "https://fermatmind.com/zh/personality/enneagram/type-9/instincts/social", + "https://fermatmind.com/zh/personality/enneagram/wings/1w2", + "https://fermatmind.com/zh/personality/enneagram/wings/1w9", + "https://fermatmind.com/zh/personality/enneagram/wings/2w1", + "https://fermatmind.com/zh/personality/enneagram/wings/2w3", + "https://fermatmind.com/zh/personality/enneagram/wings/3w2", + "https://fermatmind.com/zh/personality/enneagram/wings/3w4", + "https://fermatmind.com/zh/personality/enneagram/wings/4w3", + "https://fermatmind.com/zh/personality/enneagram/wings/4w5", + "https://fermatmind.com/zh/personality/enneagram/wings/5w4", + "https://fermatmind.com/zh/personality/enneagram/wings/5w6", + "https://fermatmind.com/zh/personality/enneagram/wings/6w5", + "https://fermatmind.com/zh/personality/enneagram/wings/6w7", + "https://fermatmind.com/zh/personality/enneagram/wings/7w6", + "https://fermatmind.com/zh/personality/enneagram/wings/7w8", + "https://fermatmind.com/zh/personality/enneagram/wings/8w7", + "https://fermatmind.com/zh/personality/enneagram/wings/8w9", + "https://fermatmind.com/zh/personality/enneagram/wings/9w1", + "https://fermatmind.com/zh/personality/enneagram/wings/9w8" + ] + }, + "llms_full_txt": { + "status": 200, + "cache_control": "public, s-maxage=3600, stale-while-revalidate=86400", + "llms_full_mode": "complete", + "bytes": 711569, + "sha256": "fe3638e019cbef236401cac8c437303f7b867e8f8eac994d0c5e7e54f4d663b8", + "unique_canonical_count": 116, + "raw_match_count": 232, + "canonical_set_sha256": "d555430ae2c64c238c0183bde35fcde415675fea0fc38933f8b1081c0459f284", + "raw_duplicate_url_count": 116, + "raw_duplicate_occurrence_total": 116, + "blocking_duplicate_canonical_count": 0, + "malformed_count": 0, + "non_apex_count": 0, + "forbidden_count": 0, + "unknown_entity_count": 0, + "distribution": { + "locale": { + "en": 58, + "zh": 58 + }, + "entity_type": { + "hub": 2, + "center": 6, + "core_type": 18, + "wing": 36, + "instinctual_subtype": 54 + } + }, + "raw_duplicates_are_advisory": true, + "canonical_urls": [ + "https://fermatmind.com/en/personality/enneagram", + "https://fermatmind.com/en/personality/enneagram/centers/gut", + "https://fermatmind.com/en/personality/enneagram/centers/head", + "https://fermatmind.com/en/personality/enneagram/centers/heart", + "https://fermatmind.com/en/personality/enneagram/type-1", + "https://fermatmind.com/en/personality/enneagram/type-1/instincts/one-to-one", + "https://fermatmind.com/en/personality/enneagram/type-1/instincts/self-preservation", + "https://fermatmind.com/en/personality/enneagram/type-1/instincts/social", + "https://fermatmind.com/en/personality/enneagram/type-2", + "https://fermatmind.com/en/personality/enneagram/type-2/instincts/one-to-one", + "https://fermatmind.com/en/personality/enneagram/type-2/instincts/self-preservation", + "https://fermatmind.com/en/personality/enneagram/type-2/instincts/social", + "https://fermatmind.com/en/personality/enneagram/type-3", + "https://fermatmind.com/en/personality/enneagram/type-3/instincts/one-to-one", + "https://fermatmind.com/en/personality/enneagram/type-3/instincts/self-preservation", + "https://fermatmind.com/en/personality/enneagram/type-3/instincts/social", + "https://fermatmind.com/en/personality/enneagram/type-4", + "https://fermatmind.com/en/personality/enneagram/type-4/instincts/one-to-one", + "https://fermatmind.com/en/personality/enneagram/type-4/instincts/self-preservation", + "https://fermatmind.com/en/personality/enneagram/type-4/instincts/social", + "https://fermatmind.com/en/personality/enneagram/type-5", + "https://fermatmind.com/en/personality/enneagram/type-5/instincts/one-to-one", + "https://fermatmind.com/en/personality/enneagram/type-5/instincts/self-preservation", + "https://fermatmind.com/en/personality/enneagram/type-5/instincts/social", + "https://fermatmind.com/en/personality/enneagram/type-6", + "https://fermatmind.com/en/personality/enneagram/type-6/instincts/one-to-one", + "https://fermatmind.com/en/personality/enneagram/type-6/instincts/self-preservation", + "https://fermatmind.com/en/personality/enneagram/type-6/instincts/social", + "https://fermatmind.com/en/personality/enneagram/type-7", + "https://fermatmind.com/en/personality/enneagram/type-7/instincts/one-to-one", + "https://fermatmind.com/en/personality/enneagram/type-7/instincts/self-preservation", + "https://fermatmind.com/en/personality/enneagram/type-7/instincts/social", + "https://fermatmind.com/en/personality/enneagram/type-8", + "https://fermatmind.com/en/personality/enneagram/type-8/instincts/one-to-one", + "https://fermatmind.com/en/personality/enneagram/type-8/instincts/self-preservation", + "https://fermatmind.com/en/personality/enneagram/type-8/instincts/social", + "https://fermatmind.com/en/personality/enneagram/type-9", + "https://fermatmind.com/en/personality/enneagram/type-9/instincts/one-to-one", + "https://fermatmind.com/en/personality/enneagram/type-9/instincts/self-preservation", + "https://fermatmind.com/en/personality/enneagram/type-9/instincts/social", + "https://fermatmind.com/en/personality/enneagram/wings/1w2", + "https://fermatmind.com/en/personality/enneagram/wings/1w9", + "https://fermatmind.com/en/personality/enneagram/wings/2w1", + "https://fermatmind.com/en/personality/enneagram/wings/2w3", + "https://fermatmind.com/en/personality/enneagram/wings/3w2", + "https://fermatmind.com/en/personality/enneagram/wings/3w4", + "https://fermatmind.com/en/personality/enneagram/wings/4w3", + "https://fermatmind.com/en/personality/enneagram/wings/4w5", + "https://fermatmind.com/en/personality/enneagram/wings/5w4", + "https://fermatmind.com/en/personality/enneagram/wings/5w6", + "https://fermatmind.com/en/personality/enneagram/wings/6w5", + "https://fermatmind.com/en/personality/enneagram/wings/6w7", + "https://fermatmind.com/en/personality/enneagram/wings/7w6", + "https://fermatmind.com/en/personality/enneagram/wings/7w8", + "https://fermatmind.com/en/personality/enneagram/wings/8w7", + "https://fermatmind.com/en/personality/enneagram/wings/8w9", + "https://fermatmind.com/en/personality/enneagram/wings/9w1", + "https://fermatmind.com/en/personality/enneagram/wings/9w8", + "https://fermatmind.com/zh/personality/enneagram", + "https://fermatmind.com/zh/personality/enneagram/centers/gut", + "https://fermatmind.com/zh/personality/enneagram/centers/head", + "https://fermatmind.com/zh/personality/enneagram/centers/heart", + "https://fermatmind.com/zh/personality/enneagram/type-1", + "https://fermatmind.com/zh/personality/enneagram/type-1/instincts/one-to-one", + "https://fermatmind.com/zh/personality/enneagram/type-1/instincts/self-preservation", + "https://fermatmind.com/zh/personality/enneagram/type-1/instincts/social", + "https://fermatmind.com/zh/personality/enneagram/type-2", + "https://fermatmind.com/zh/personality/enneagram/type-2/instincts/one-to-one", + "https://fermatmind.com/zh/personality/enneagram/type-2/instincts/self-preservation", + "https://fermatmind.com/zh/personality/enneagram/type-2/instincts/social", + "https://fermatmind.com/zh/personality/enneagram/type-3", + "https://fermatmind.com/zh/personality/enneagram/type-3/instincts/one-to-one", + "https://fermatmind.com/zh/personality/enneagram/type-3/instincts/self-preservation", + "https://fermatmind.com/zh/personality/enneagram/type-3/instincts/social", + "https://fermatmind.com/zh/personality/enneagram/type-4", + "https://fermatmind.com/zh/personality/enneagram/type-4/instincts/one-to-one", + "https://fermatmind.com/zh/personality/enneagram/type-4/instincts/self-preservation", + "https://fermatmind.com/zh/personality/enneagram/type-4/instincts/social", + "https://fermatmind.com/zh/personality/enneagram/type-5", + "https://fermatmind.com/zh/personality/enneagram/type-5/instincts/one-to-one", + "https://fermatmind.com/zh/personality/enneagram/type-5/instincts/self-preservation", + "https://fermatmind.com/zh/personality/enneagram/type-5/instincts/social", + "https://fermatmind.com/zh/personality/enneagram/type-6", + "https://fermatmind.com/zh/personality/enneagram/type-6/instincts/one-to-one", + "https://fermatmind.com/zh/personality/enneagram/type-6/instincts/self-preservation", + "https://fermatmind.com/zh/personality/enneagram/type-6/instincts/social", + "https://fermatmind.com/zh/personality/enneagram/type-7", + "https://fermatmind.com/zh/personality/enneagram/type-7/instincts/one-to-one", + "https://fermatmind.com/zh/personality/enneagram/type-7/instincts/self-preservation", + "https://fermatmind.com/zh/personality/enneagram/type-7/instincts/social", + "https://fermatmind.com/zh/personality/enneagram/type-8", + "https://fermatmind.com/zh/personality/enneagram/type-8/instincts/one-to-one", + "https://fermatmind.com/zh/personality/enneagram/type-8/instincts/self-preservation", + "https://fermatmind.com/zh/personality/enneagram/type-8/instincts/social", + "https://fermatmind.com/zh/personality/enneagram/type-9", + "https://fermatmind.com/zh/personality/enneagram/type-9/instincts/one-to-one", + "https://fermatmind.com/zh/personality/enneagram/type-9/instincts/self-preservation", + "https://fermatmind.com/zh/personality/enneagram/type-9/instincts/social", + "https://fermatmind.com/zh/personality/enneagram/wings/1w2", + "https://fermatmind.com/zh/personality/enneagram/wings/1w9", + "https://fermatmind.com/zh/personality/enneagram/wings/2w1", + "https://fermatmind.com/zh/personality/enneagram/wings/2w3", + "https://fermatmind.com/zh/personality/enneagram/wings/3w2", + "https://fermatmind.com/zh/personality/enneagram/wings/3w4", + "https://fermatmind.com/zh/personality/enneagram/wings/4w3", + "https://fermatmind.com/zh/personality/enneagram/wings/4w5", + "https://fermatmind.com/zh/personality/enneagram/wings/5w4", + "https://fermatmind.com/zh/personality/enneagram/wings/5w6", + "https://fermatmind.com/zh/personality/enneagram/wings/6w5", + "https://fermatmind.com/zh/personality/enneagram/wings/6w7", + "https://fermatmind.com/zh/personality/enneagram/wings/7w6", + "https://fermatmind.com/zh/personality/enneagram/wings/7w8", + "https://fermatmind.com/zh/personality/enneagram/wings/8w7", + "https://fermatmind.com/zh/personality/enneagram/wings/8w9", + "https://fermatmind.com/zh/personality/enneagram/wings/9w1", + "https://fermatmind.com/zh/personality/enneagram/wings/9w8" + ] + } + }, + "expected_distribution": { + "locale": { + "en": 58, + "zh": 58 + }, + "entity_type": { + "hub": 2, + "center": 6, + "core_type": 18, + "wing": 36, + "instinctual_subtype": 54 + } + }, + "side_effects": { + "deploy": 0, + "cms_writes": 0, + "eligibility_writes": 0, + "search_queue_writes": 0, + "indexnow_submissions": 0, + "sitemap_or_index_mutations": 0, + "secrets_or_permissions_mutation": 0 + }, + "failures": [], + "notes": [ + "/llms-full.txt raw duplicate URL mentions are advisory for enriched feed readback; blocking duplicate canonical count remains 0." + ] +} diff --git a/generated/enneagram-llms-full-release/release-readback.md b/generated/enneagram-llms-full-release/release-readback.md new file mode 100644 index 000000000..5db17bedb --- /dev/null +++ b/generated/enneagram-llms-full-release/release-readback.md @@ -0,0 +1,42 @@ +# ENNEAGRAM-LLMS-FULL-RELEASE-01 + +- Checked at: `2026-07-12T15:49:51.204248Z` +- Conclusion: `COMPLETED_PRODUCTION_READBACK` +- fap-web cache ops run: `29198788071` +- fap-web workflow head SHA: `54eae3332bfbd4374ea0fc3da1ff4eb6751ed786` +- remote frontend SHA: `11826dc0034ad111a0456f397a104a332c9b8b08` +- PM2 after reload: `4/4` online + +## Feed readback + +- `/llms.txt` unique Enneagram canonical URLs: `116/116` +- `/llms-full.txt` unique Enneagram canonical URLs: `116/116` +- `/llms-full.txt` mode: `complete` +- Locale distribution: `{'en': 58, 'zh': 58}` +- Entity distribution: `{'hub': 2, 'center': 6, 'core_type': 18, 'wing': 36, 'instinctual_subtype': 54}` + +## Safety counters + +- `/llms.txt` blocking duplicate canonical: `0` +- `/llms-full.txt` blocking duplicate canonical: `0` +- `/llms-full.txt` raw duplicate advisory URLs: `116` +- malformed URLs: `llms.txt=0`, `llms-full.txt=0` +- non-apex hosts: `llms.txt=0`, `llms-full.txt=0` +- forbidden/private/internal hits: `llms.txt=0`, `llms-full.txt=0` +- unknown entity routes: `llms.txt=0`, `llms-full.txt=0` + +## Side effects + +- deploy: `0` +- CMS writes: `0` +- eligibility writes: `0` +- Search Queue writes: `0` +- IndexNow submissions: `0` +- sitemap/index mutation: `0` +- secrets/permissions mutation: `0` + +## Notes + +- The fap-web cache-only ops artifact is incorporated by SHA256: `83bcf833bd77b19566de62b3cec05f4726485bc6fb771e196e26a7371f8eaf88`. +- `/llms-full.txt` is an enriched feed; raw repeated canonical mentions are recorded as advisory evidence, not a release blocker. The blocking canonical duplicate counter is `0`. +- This PR does not deploy, mutate CMS content, modify llms eligibility, submit Search, call IndexNow, or warm backend cache.