MBTI-FULL-AUDIT-30: audit complete Chinese MBTI asset estate#1730
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b9de6b352a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| ...target, | ||
| canonical, | ||
| api_url: apiUrl, | ||
| api_latency_ms: Date.now() - startedAt, |
There was a problem hiding this comment.
Measure API latency independently
When the HTML page fetch is slower than the API request, this records the combined Promise.all wall time as api_latency_ms, so the audit can falsely classify public API latency and inflate latency_over_10_seconds_count. Capture timing around fetchJson(apiUrl) separately from the canonical HTML fetch before writing the API latency field.
Useful? React with 👍 / 👎.
| depends_on: | ||
| - MBTI-GSC-25 |
There was a problem hiding this comment.
Reconcile the dependency before adding this train item
This new item depends on MBTI-GSC-25, but the predecessor entry still has next_task: null in the manifest and its ledger still records status: ready_to_merge with merged_at: null; despite the new state entry claiming GitHub shows it merged, train/dependency checks that read the existing manifest/state will see the dependency as unmerged or stop at GSC-25. Reconcile the MBTI-GSC-25 manifest/state and wire its next task when adding this dependent item.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 285be02126
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| "depends_on": ["MBTI-GSC-25"], | ||
| "train_scope": "mbti_full_chinese_asset_inventory_runtime_baseline", | ||
| "title": "MBTI-FULL-AUDIT-30: audit complete Chinese MBTI asset estate", | ||
| "commit_sha": "b9de6b352a862e2dffa290b91d7f8d5584abc225", |
There was a problem hiding this comment.
Record the final head SHA in the AUDIT-30 ledger
This entry is marked ready_to_merge after later PR updates, but commit_sha still points to the first pushed commit (b9de...) rather than the final reviewed tree/head that includes the PR-open/ready-to-merge ledger updates and the whitespace fix noted below. When closeout or dependency reconciliation uses this field to verify what passed checks or what merged, AUDIT-30 will be pinned to a stale commit; update it when marking the item ready.
Useful? React with 👍 / 👎.
| github_checks_required: true | ||
| squash: true | ||
| auto_merge: true | ||
| next_task: MBTI-PROFILE-NT-31 |
There was a problem hiding this comment.
Register the next train item before linking it
This advances the train to MBTI-PROFILE-NT-31, but I only find that ID in this new next_task/routing text and not as an id: in docs/codex/pr-train.yaml or as a state entry. When the train follows AUDIT-30 after merge, the manifest preflight will stop on a missing PR id; either add the authorized manifest/state entry for the next item or leave next_task unset until it exists.
Useful? React with 👍 / 👎.
| const robots = extractRobots(html); | ||
| const releaseChecks = { | ||
| canonical: extractCanonical(html) === canonical, | ||
| robots: robots.includes("index") && robots.includes("follow") && !robots.includes("noindex"), |
There was a problem hiding this comment.
Match robots directives exactly
If a page returns a robots tag such as index,nofollow, this substring check still passes because nofollow contains follow, so the audit can mark a nofollow/indexability regression as healthy. Split the robots content into directives and require exact index and follow tokens while rejecting exact blocking directives.
Useful? React with 👍 / 👎.
What changed
Why
Validation
Deferred