Skip to content

Hoist Python report and Markdown output primitives #8123

@doublemover

Description

@doublemover

Parent inventory: #8108
Blocked by: #8119, #8120

Objective

Create small report/Markdown/file-output primitives for build and publisher scripts without creating a publisher framework.

Shared Module Specification

  • Add scripts/objc3c_tooling/reports.py.
  • Expose helpers for Markdown headings, bullets, tables, table-pipe escaping, artifact path rendering, and common summary/footer sections.
  • Expose write_outputs-style primitives only for common artifact-write shapes.
  • Keep business logic and report-specific schema construction local.
  • Reuse shared path, JSON, file-output, and subprocess helpers.

Migration Checklist

  • Migrate render_markdown and render_markdown_report only where primitives reduce duplication without hiding content.
  • Migrate build_summary/build_summary_payload scaffolding only where schemas match.
  • Migrate repeated write_outputs artifact write shapes.
  • Preserve output file names, JSON schemas, Markdown structure, and public report text unless intentionally fixing a validated bug.

Complete Replacement Inventory

  • render_markdown - 21 definition(s)/local occurrence(s) to replace or explicitly document as intentionally local if semantics differ.
    • scripts/build_objc3c_claimability_dashboard_release_blocker_contract.py:179
    • scripts/build_objc3c_cross_module_semantic_contracts_diagnostics.py:276
    • scripts/build_objc3c_effects_ownership_semantic_model.py:358
    • scripts/build_objc3c_manifest_object_ir_truth_gate.py:447
    • scripts/build_objc3c_object_model_ir_lowering_closure.py:338
    • scripts/build_objc3c_parser_container_layout_closure.py:123
    • scripts/build_objc3c_parser_draft_syntax_conformance.py:293
    • scripts/build_objc3c_parser_draft_syntax_surface.py:169
    • scripts/build_objc3c_runtime_backed_semantics_closure.py:393
    • scripts/build_objc3c_support_classification.py:344
    • scripts/build_objc3c_type_semantic_model_closure.py:344
    • scripts/check_activation_triggers.py:334
    • scripts/check_bootstrap_readiness.py:227
    • scripts/check_objc3c_public_claim_drift.py:420
    • scripts/extract_open_blockers.py:572
    • scripts/extract_open_issues.py:202
    • scripts/extract_remaining_tasks.py:610
    • scripts/generate_compiler_dispatch_plan.py:220
    • scripts/generate_execution_microtasks.py:228
    • scripts/generate_quality_gate_decision.py:674
    • scripts/render_objc3c_public_command_surface.py:47
  • render_markdown_report - 4 definition(s)/local occurrence(s) to replace or explicitly document as intentionally local if semantics differ.
    • scripts/audit_objc3c_planning_publication.py:67
    • scripts/run_activation_preflight.py:997
    • scripts/run_bootstrap_readiness.py:469
    • scripts/run_open_blocker_audit.py:784
  • build_summary - 12 definition(s)/local occurrence(s) to replace or explicitly document as intentionally local if semantics differ.
    • scripts/build_objc3c_claimability_dashboard_release_blocker_contract.py:84
    • scripts/build_objc3c_cross_module_semantic_contracts_diagnostics.py:182
    • scripts/build_objc3c_effects_ownership_semantic_model.py:264
    • scripts/build_objc3c_manifest_object_ir_truth_gate.py:329
    • scripts/build_objc3c_object_model_ir_lowering_closure.py:220
    • scripts/build_objc3c_parser_container_layout_closure.py:62
    • scripts/build_objc3c_parser_draft_syntax_conformance.py:151
    • scripts/build_objc3c_parser_draft_syntax_surface.py:107
    • scripts/build_objc3c_runtime_backed_semantics_closure.py:315
    • scripts/build_objc3c_support_classification.py:253
    • scripts/build_objc3c_type_semantic_model_closure.py:248
    • scripts/check_objc3c_public_claim_drift.py:334
  • build_summary_payload - 3 definition(s)/local occurrence(s) to replace or explicitly document as intentionally local if semantics differ.
    • scripts/run_activation_preflight.py:849
    • scripts/run_bootstrap_readiness.py:327
    • scripts/run_open_blocker_audit.py:725
  • write_outputs - 10 definition(s)/local occurrence(s) to replace or explicitly document as intentionally local if semantics differ.
    • scripts/build_objc3c_claimability_dashboard_release_blocker_contract.py:193
    • scripts/build_objc3c_cross_module_semantic_contracts_diagnostics.py:301
    • scripts/build_objc3c_effects_ownership_semantic_model.py:383
    • scripts/build_objc3c_object_model_ir_lowering_closure.py:365
    • scripts/build_objc3c_parser_container_layout_closure.py:148
    • scripts/build_objc3c_parser_draft_syntax_conformance.py:321
    • scripts/build_objc3c_parser_draft_syntax_surface.py:192
    • scripts/build_objc3c_support_classification.py:374
    • scripts/build_objc3c_type_semantic_model_closure.py:369
    • scripts/check_objc3c_public_claim_drift.py:446

Performance And Reliability Requirements

  • Keep helper code small, dependency-light, and fast enough for normal development feedback.
  • Add focused tests for edge cases before broad migration.
  • Preserve existing output schemas and public behavior unless an intentional bug fix is validated.
  • Keep production helpers separated from test-only helpers.
  • Do not use tmp/ as durable source-of-truth; generated temporary files are allowed only as transient command inputs.

Fast Tests

  • Add tests for Markdown table escaping, path rendering, deterministic section output, and file writes.
  • Run changed build/publish/materialize scripts in focused batches.
  • Run python -m py_compile for changed modules/scripts.

End-To-End Completion Criteria

  • Common Markdown/report primitives are shared without opaque framework calls.
  • Durable report output remains deterministic.
  • Reports with Markdown tables escape pipes correctly.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions