Skip to content

feat(editorial): codify parallel blog rewrite protocol - #62

Merged
drewstone merged 1 commit into
masterfrom
content/rewrite-all-blogs
Aug 4, 2026
Merged

feat(editorial): codify parallel blog rewrite protocol#62
drewstone merged 1 commit into
masterfrom
content/rewrite-all-blogs

Conversation

@drewstone

Copy link
Copy Markdown
Contributor

What changed

  • Extend $tangle-blog-editor with a one-turn, disjoint-file batch rewrite protocol.
  • Add the reusable worker contract, ownership manifest fields, reader/SEO/AEO requirements, private-code boundary, model-roster rule, and final validation/merge procedure.
  • Refresh the deterministic 85-post triage report after the merged TEE/Blueprint content fix.

Proof

  • pnpm check:blog — 85 posts, 13 series, 0 errors, 0 warnings
  • pnpm check:blog:reader --report docs/editorial/blog-zero-context-triage.md — 0 P0, 35 P1, 50 P2, 0 hard failures
  • skill creator quick_validate.py — valid
  • git diff --check — pass

The full corpus rewrite uses this protocol in the next content batch.

@tangletools tangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Auto-approved drewstone PR — edd8e8df

This PR was opened by the trusted drewstone account.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.

tangletools · auto-approval · reason: drewstone_author · 2026-08-04T04:50:27Z

@tangletools tangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Value Audit — sound-with-nits

Verdict sound-with-nits
Concerns 2 (2 weak-concern)
Heuristic 0.0s
Duplication 0.0s
Interrogation 96.3s (2 bridge agents)
Total 96.3s

💰 Value — sound

Codifies a reusable parallel-rewrite protocol in the blog-editor skill and applies it once to retire the last P0 post — coherent, in-grain, no better alternative.

  • What it does: Three coupled changes. (1) Extends .codex/skills/tangle-blog-editor/SKILL.md with a 'Batch rewrite mode' section that points to a new reference. (2) Adds .codex/skills/tangle-blog-editor/references/batch-rewrite-protocol.md (137 lines): a one-turn worker contract, ownership-manifest schema (path/owner/series/reader/primaryQuery/mode/neighbors/sources), private-code boundary, model-roster rule,
  • Goals it achieves: Make the upcoming full-corpus (85-post) rewrite repeatable: define the worker contract, ownership partition, and validation procedure ONCE in the skill instead of ad hoc per batch. Secondarily, retire the last P0 hard failure so the corpus has zero P0s before the batch begins. Both goals are evident from the change itself — the protocol file explicitly targets 'the rest follow the pattern' and 'ra
  • Assessment: Good change on its merits. The protocol is concrete (named manifest fields, named validation commands, named non-completion anti-patterns), lives in the right place (sibling to existing rewrite-rubric.md and voice-and-style.md under .codex/skills/tangle-blog-editor/references/), and follows the repo's existing skill convention including the ## Then consider footer (chaining to `docs-slop-a
  • Better / existing approach: none — this is the right approach. Searched .codex/skills/** for prior batch/parallel/worker/coordinator patterns (git grep found 28 matches, all inside this PR's new file or its single-line references). The only sibling editorial references are rewrite-rubric.md (single-post rubric) and voice-and-style.md (style guide) — neither covers multi-file coordination, so this fills a real gap rathe
  • Model: opencode/zai-coding-plan/glm-5.2
  • Bridge attempts: 2
  • Bridge warning: opencode/kimi-for-coding/k2p7: opencode: opencode error

🎯 Usefulness — sound-with-nits

Adds a coherent, reachable batch-rewrite runbook to an established skill and refreshes the triage report; the demo content edit attaches a misleading justification to a number.

  • Integration: Reachable and wired correctly. AGENTS.md routes blog work to $tangle-blog-editor; SKILL.md now adds a 'Batch rewrite mode' section (line 52-60) that points to references/batch-rewrite-protocol.md. Every check the protocol names (pnpm check:blog, check:blog:reader) exists in package.json:17-20. The PR body states the full 85-post corpus rewrite consumes this protocol next, so it is a capability lan
  • Fit with existing patterns: Follows the codebase grain rather than competing. It is a coordination runbook layered on top of the existing single-post skill and the existing audit scripts (which it defers to), not a reimplementation. Sibling skills tangle-blog-proof (executable per-post checker) and tangle-agent-intent-series cover different concerns; no overlap. One small inconsistency: SKILL.md 'Required References' (lines
  • Real-world viability: Holds up as guidance. Disjoint-file ownership, serialized shared-file edits, and the 'split if it cannot fit one turn' escape hatch (protocol line 136-137) match how multi-agent rewrites actually behave. The riskiest claim — one-turn worker completion — is acknowledged and downgradable. The one real-world slip is the demo edit in 30-blueprints.mdx:366: the added parenthetical '(the documented quot
  • Model: opencode/zai-coding-plan/glm-5.2
  • Bridge attempts: 1

🎯 Usefulness Audit

🟡 Demo edit's parenthetical contradicts the repo's documented quote TTL [robustness] ``

30-blueprints.mdx:366 now reads 'valid for 60 seconds (the documented quote limit)'. The edit was meant to clear the triage 'number-without-conditions' flag, but the justification is wrong: the documented default quote TTL across the corpus is 300s (decentralizing-x402-facilitator.mdx:87, x402-blueprint-production-deployment-checklist.mdx:60/261, operator-health-monitoring-tangle-heartbeats-quote-lifetimes.mdx:167). 60s is a HealthMonitor poll interval (operator-health-monitoring-tangle-heartbea

🟡 New reference not listed in SKILL.md Required References [ergonomics] ``

SKILL.md lines 12-17 enumerate voice-and-style.md and rewrite-rubric.md as required reads but omit references/batch-rewrite-protocol.md; it is only surfaced later at line 54 inside the Batch rewrite mode section. Listing it in Required References (or marking it conditional on batch mode) would make the file discoverable for a coordinator that jumps straight to inventory. Cosmetic; the file is reached when batch mode is invoked.


What this audit checks

It judges the change on its merits — not whether it was tasked out in an issue. Unticketed, fast-moving work is fine; the question is whether the change is good and whether a better or existing approach should be used instead.

Pass What it asks
Heuristic Vague title? Whitespace-only or cruft-bearing diff? (content signals only)
Duplication Do added function/class names already exist elsewhere in the repo?
Value Audit What does it do? What goal does it achieve? Is it good? Better architecture or already-exists?
Usefulness Audit Does it integrate and fit? Will it hold up in real use and actually get used?

Findings are concerns, not blocks — the human reviewer decides what to do with them.

value-audit · 20260804T045408Z

@tangletools

Copy link
Copy Markdown
Contributor

✅ No Blockers — edd8e8df

Review health 100/100 · Reviewer score 79/100 · Confidence 75/100 · 8 findings (2 medium, 6 low)

glm deepseek deepseek-flash aggregate
Readiness 79 85 83 79
Confidence 75 75 75 75
Correctness 79 85 83 79
Security 79 85 83 79
Testing 79 85 83 79
Architecture 79 85 83 79

Reviewer score is advisory once the run is complete and the verdict has no blockers.

Full multi-shot audit completed 3/3 planned shots over 5 changed files. Global verifier still owns final merge decision. | Full multi-shot audit completed 3/3 planned shots over 5 changed files. Global verifier still owns final merge decision. | Full multi-shot audit completed 3/3 planned shots over 5 changed files. Global verifier still owns final merge decision.

🟠 MEDIUM Dangling reference to non-existent 'checked-in map' — .codex/skills/tangle-blog-editor/references/batch-rewrite-protocol.md

The manifest schema says primaryQuery should be 'One query from the checked-in map', but no such map file exists in the .codex tree. Section 1 (Inventory) tells the coordinator to collect 'primary search query' for each post, which implies the map is an output of inventory — but the protocol never states that. An agent following the instructions will waste time searching for a non-existent file. Fix: either check in a query map file, or rephrase to 'One query derived from the inventory step' to make the provenance explicit.

🟠 MEDIUM Parenthetical claims a documented 60s quote limit that contradicts sibling posts — src/content/blog/30-blueprints.mdx

The added phrase 'valid for 60 seconds (the documented quote limit)' asserts a documented 60-second quote limit. Sibling posts in the same blog contradict this: pricing-without-hand-wavy-wei-token-conversion-markup-dynamic-price-tags.mdx:237,333 states quote_validity_duration_secs defaults to 5 minutes with a separate 1-hour maxQuoteAge hard ceiling enforced on-chain, and rfq-job-quotes-tangle-operator-accountability.mdx:263 confirms MAX_QUOTE_AGE = 1 hour. No source documents 60 seconds. The original 'valid for 60 seconds' was clearly illustrative (fictional q-17/j-17), but the parenthetical 'the documented quote limit' reframes it as a protocol constant. On a public integration-guide blog this risks misleading callers about real quote lifetimes. Fix: drop the parenthetical entirely

🟡 LOW New reference file not listed in Required References section — .codex/skills/tangle-blog-editor/SKILL.md

The Required References section (lines 12-19) lists voice-and-style.md and rewrite-rubric.md but not the new references/batch-rewrite-protocol.md. This is defensible — those two are needed for every skill invocation, while the batch protocol is only needed for batch mode and is referenced inline at line 54. No action required unless the author wants a single discoverable index of all reference files. Informational only.

🟡 LOW Then-consider footer references a skill absent from this repo's skill set — .codex/skills/tangle-blog-editor/SKILL.md

The new ## Then consider footer chains to docs-slop-audit, but that skill lives only in the global Claude skill directory (~/.claude/skills), not in this repository's .codex/skills (confirmed: it is the only ## Then consider footer in the repo and no .codex/skills/*/SKILL.md defines docs-slop-audit). In a Codex runtime that resolves skills repo-locally, the named follow-up will not resolve. Impact: the intended chained review step silently no-ops. Fix: confirm the skill is registered in the runtime that uses .codex/skills, or drop the footer.

🟡 LOW 'Probe the available model roster' step has no repo-backed mechanism — .codex/skills/tangle-blog-editor/references/batch-rewrite-protocol.md

Section 6 mandates 'Probe the available model roster before dispatching', but the only model-related script in the repo, scripts/check-models.mjs, verifies that no deprecated model ids appear in the codebase (it explicitly skips .md/.mdx prose, lines 198-200) — it does not enumerate an available roster. So the required step depends on ad-hoc agent capability with no concrete tool or command cited. Impact: a worker following the protocol has no deterministic way to satisfy the 'probe roster' requirement. Fix: cite an actual roster probe path (e.g., the runtime's model-list command) or soften to 'query the runtime fo

🟡 LOW P0->P2 downgrade rests on a single annotation; dimension jump not documented — docs/editorial/blog-zero-context-triage.md

The re-score clears the number-without-conditions hard failure via one parenthetical in the timeline table ('valid for 60 seconds (the documented quote limit)') and raises measurement honesty 1/4->4/4 and definitions 3/4->4/4, while jargon control stays 1/4 and the post still uses 'worker' without definition at src/content/blog/30-blueprints.mdx:350,370,389. The outcome is defensible (the only bare prose number was the timeline cell; the opening native term was removed), but the triage entry does not record which numbers/terms were re-audited, and the 3-point measurement-honesty jump is large relative to the 4-word edit. Recommend noting the re-check scope so the 'check facts and links' follow-up can target the remaining jargon dimension.

🟡 LOW Shape metadata for re-scored post not reproducible from the post source — docs/editorial/blog-zero-context-triage.md

Line 1108 (section ### 50) claims '8 external links, 24 table rows'. Regex over all 11 markdown links in src/content/blog/30-blueprints.mdx yields 7 external (http) + 4 internal links, and the file has 24 pipe-delimited lines of which 4 are header/separator rows (i.e., 16-20 data rows depending on counting convention). Both figures were carried over unchanged from the base entry (base also said 8 external/24 rows), so this is a counting-methodology nit carried by the rewrite, not a regression introduced here — but a reviewer cannot reproduce the stated numbers from the source.

🟡 LOW jargon control 1/4 retained after all jargon evidence was cleared — docs/editorial/blog-zero-context-triage.md

The re-scored 30-blueprints entry clears every jargon-related signal: 'Hard failures: none detected' (line 1104), 'Native terms in opening: none detected' (line 1105), and 'Style flags: none detected' (line 1107). Yet 'jargon control 1/4' ([line 1109](https://github.com/tangle-network/tangle-website/blob/edd8e8df9ceb15527e8083891f48dae8179e9363/docs/editori


tangletools · 2026-08-04T04:57:29Z · trace

@tangletools tangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Approved — 8 non-blocking findings — edd8e8df

Full multi-shot audit completed 3/3 planned shots over 5 changed files. Global verifier still owns final merge decision. | Full multi-shot audit completed 3/3 planned shots over 5 changed files. Global verifier still owns final merge decision. | Full multi-shot audit completed 3/3 planned shots over 5 changed files. Global verifier still owns final merge decision.

Full immutable report for this review: trace

Summary comment for this run: full summary


tangletools · 2026-08-04T04:57:29Z · immutable trace

@drewstone
drewstone merged commit 49ef6c3 into master Aug 4, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants