frontmattering 0.4.2__tar.gz → 0.4.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- frontmattering-0.4.4/.github/ISSUE_TEMPLATE/config.yml +11 -0
- frontmattering-0.4.4/.github/ISSUE_TEMPLATE/doc_confusion.yml +18 -0
- frontmattering-0.4.4/.github/ISSUE_TEMPLATE/pilot_report.yml +54 -0
- frontmattering-0.4.4/.github/ISSUE_TEMPLATE/runtime_ci_report.yml +30 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/.github/workflows/ci.yml +5 -1
- frontmattering-0.4.4/.github/workflows/publish.yml +45 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/.github/workflows/release.yml +2 -0
- frontmattering-0.4.4/CHANGELOG.md +43 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/MANIFEST.in +0 -3
- {frontmattering-0.4.2 → frontmattering-0.4.4}/PKG-INFO +20 -12
- frontmattering-0.4.4/README.md +63 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/benchmarks/cold_start_v1/tools/build_arms.py +1 -1
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/AI_INDEX.json +8 -8
- {frontmattering-0.4.2/kernel/frontmattering/resources → frontmattering-0.4.4/kernel}/KERNEL_ACCEPTANCE_REPORT.md +1 -1
- frontmattering-0.4.4/kernel/frontmattering/__init__.py +1 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/__main__.py +25 -6
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/promotion.py +32 -8
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/AI_INDEX.json +8 -8
- {frontmattering-0.4.2/kernel → frontmattering-0.4.4/kernel/frontmattering/resources}/KERNEL_ACCEPTANCE_REPORT.md +1 -1
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/tools/check_pilot_readiness.py +10 -4
- {frontmattering-0.4.2/kernel → frontmattering-0.4.4/kernel/frontmattering/resources}/tools/distribution_receipt.py +2 -2
- {frontmattering-0.4.2/kernel → frontmattering-0.4.4/kernel/frontmattering/resources}/tools/generate_ai_index.py +26 -4
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering.egg-info/PKG-INFO +20 -12
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering.egg-info/SOURCES.txt +7 -4
- frontmattering-0.4.4/kernel/frontmattering.egg-info/requires.txt +5 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/tools/check_pilot_readiness.py +10 -4
- {frontmattering-0.4.2/kernel/frontmattering/resources → frontmattering-0.4.4/kernel}/tools/distribution_receipt.py +2 -2
- {frontmattering-0.4.2/kernel/frontmattering/resources → frontmattering-0.4.4/kernel}/tools/generate_ai_index.py +26 -4
- {frontmattering-0.4.2 → frontmattering-0.4.4}/pyproject.toml +6 -1
- frontmattering-0.4.4/tests/test_v044_quickstart_transactional_promote.py +85 -0
- frontmattering-0.4.2/CHANGELOG.md +0 -22
- frontmattering-0.4.2/FRONTMATTERING_V0_4_2_DELIVERY_NOTE.md +0 -18
- frontmattering-0.4.2/FRONTMATTERING_v0_4_2_RELEASE_SUMMARY.md +0 -25
- frontmattering-0.4.2/README.md +0 -59
- frontmattering-0.4.2/RELEASE_NOTES_v0_4_2.md +0 -30
- frontmattering-0.4.2/kernel/frontmattering/__init__.py +0 -1
- frontmattering-0.4.2/kernel/frontmattering.egg-info/requires.txt +0 -2
- {frontmattering-0.4.2 → frontmattering-0.4.4}/.editorconfig +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/.gitattributes +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/.github/pull_request_template.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/.gitignore +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/CODE_OF_CONDUCT.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/COMMERCIAL_LICENSE_REQUIRED.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/CONTRIBUTING.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/GOVERNANCE.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/LICENSE.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/NOTICE +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/REPOSITORY_STATUS.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/SECURITY.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/SUPPORT.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/THIRD_PARTY_NOTICES.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/TRADEMARKS.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/benchmarks/cold_start_v1/README.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/benchmarks/cold_start_v1/benchmark_contract.yaml +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/benchmarks/cold_start_v1/expected_answers.yaml +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/benchmarks/cold_start_v1/fixtures/README.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/benchmarks/cold_start_v1/participant_receipt.schema.json +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/benchmarks/cold_start_v1/source_corpus/00_START_HERE.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/benchmarks/cold_start_v1/source_corpus/10_NORMATIVE_SPEC.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/benchmarks/cold_start_v1/source_corpus/20_IMPLEMENTATION_CONTRACT.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/benchmarks/cold_start_v1/source_corpus/21_LEGACY_IMPLEMENTATION_CONTRACT.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/benchmarks/cold_start_v1/source_corpus/30_TEST_SUFFICIENCY.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/benchmarks/cold_start_v1/source_corpus/40_EVIDENCE_RECORD.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/benchmarks/cold_start_v1/source_corpus/50_RELEASE_DECISION.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/benchmarks/cold_start_v1/tasks.yaml +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/benchmarks/cold_start_v1/tools/check_content_equivalence.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/benchmarks/cold_start_v1/tools/score.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/AI_START_HERE.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/DAILY_USE_GUIDE.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/FRONTMATTERING_FRONTMATTER_SPEC_v0_1_5.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/examples/no_frontmatter_demo/00_AI_START_HERE.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/examples/no_frontmatter_demo/10_NORMATIVE_SPEC.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/examples/no_frontmatter_demo/20_IMPLEMENTATION_CONTRACT.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/examples/no_frontmatter_demo/30_TEST_SUFFICIENCY.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/examples/no_frontmatter_demo/40_EVIDENCE_RECORD.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/examples/no_frontmatter_demo/50_RELEASE_DECISION.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/examples/power_demo/00_AI_START_HERE.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/examples/power_demo/10_NORMATIVE_SPEC.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/examples/power_demo/20_IMPLEMENTATION_CONTRACT.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/examples/power_demo/30_TEST_SUFFICIENCY.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/examples/power_demo/40_EVIDENCE_RECORD.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/examples/power_demo/50_RELEASE_DECISION.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/adoption_digest_mismatch_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/adoption_record_on_wrong_role_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/adoption_record_shape_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/adoption_without_bootstrap_receipt_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/authored_go_used_as_evidence_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/body_tether_body_digest_mismatch_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/body_tether_fields_mismatch_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/body_tether_malformed_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/body_tether_missing_under_trust_rejected/.frontmattering/project.yaml +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/body_tether_missing_under_trust_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/body_tether_scope_selector_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/body_tether_unknown_canonicalization_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/bootstrap_receipt_shape_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/bootstrap_without_validator_blocks_adoption/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/claim_boundary_missing_does_not_verify_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/claimed_state_overreach_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/clause_enforcement_drift_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/container_cardinality_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/deepest_intention_missing_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/downstream_phase_without_upstream_evidence_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/duplicate_document_id_rejected/a.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/duplicate_document_id_rejected/b.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/duplicate_yaml_key_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/evidence_edge_digest_missing_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/evidence_reference_used_as_truth_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/external_edge_locator_missing_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/external_edge_set_id_missing_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/extracted_catalog_drift_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/fixture_reverse_reachability_drift_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/frontmatter_only_view_incomplete_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/frontmatter_registry_conflict_blocks/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/frontmatter_view_body_truth_overclaim_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/generated_state_in_frontmatter_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/green_checks_conflation_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/historical_digest_used_as_current_evidence_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/implementation_start_gate_bypass_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/intention_positive_negative_conflation_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/legacy_string_machine_surface_requires_mapping/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/load_order_inversion_flagged/a.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/load_order_inversion_flagged/b.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/machine_surface_identity_incomplete_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/migration_field_drop_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/migration_silent_coercion_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/missing_frontmatter_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/non_root_exception_or_silent_fallback_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/nonowner_redefines_intention_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/output_format_conflation_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/parser_byte_ranges_missing_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/parser_partial_model_on_error_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/parser_source_locator_missing_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/projected_field_without_origin_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/projection_rebuild_nondeterminism_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/projection_row_without_source_locator_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/relationship_resolution_scope_missing_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/relationship_resolution_scope_unknown_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/relationship_semantics_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/relationship_target_unresolved_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/release_surface_digest_missing_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/required_dependency_cycle_rejected/a.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/required_dependency_cycle_rejected/b.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/routing_tag_not_in_task_catalog_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/routing_tag_router_not_in_scope_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/scope_on_nonsupersedes_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/stale_bootstrap_receipt_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/stale_validation_result_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/supersedes_without_scope_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/target_section_not_found_rejected/a.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/target_section_not_found_rejected/b.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/target_sections_on_external_edge_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/task_scoped_defects_filtering/router.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/task_scoped_defects_filtering/selected.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/task_scoped_defects_filtering/skipped.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/template_claims_normative_authority_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/two_documents_own_same_intention_rejected/a.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/two_documents_own_same_intention_rejected/b.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/undefined_conditional_token_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/undefined_type_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/unknown_authority_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/unknown_document_role_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/unknown_field_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/unknown_root_block_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/unresolved_reference_on_required_edge_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/unsupported_schema_version_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/untemplated_frontmatter_bypass_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/validator_passes_conflation_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/invalid/yaml_1_1_boolean_words_not_coerced/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/pilot_security/blockquote.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/pilot_security/code_fence.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/pilot_security/dangerous_html.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/pilot_security/dangerous_uri.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/pilot_security/direct_instruction.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/pilot_security/generated_resource_limits.yaml +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/pilot_security/indirect_instruction.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/pilot_security/legitimate_security_discussion.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/pilot_security/link.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/pilot_security/table.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/valid/adoption_locator_trigger_word_is_data_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/valid/body_tether_fresh_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/valid/bootstrap_validation_receipt_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/valid/claim_prose_substrings_are_not_verdicts_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/valid/companion_and_appendix_edges_valid/a.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/valid/companion_and_appendix_edges_valid/b.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/valid/document_binding_to_external_intention_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/valid/document_realizing_external_intention_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/valid/document_referencing_external_intention_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/valid/evidence_record_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/valid/evidence_support_substrings_are_not_proof_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/valid/external_document_set_edge_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/valid/frontmatter_adoption_record_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/valid/frontmatter_projection_mapping_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/valid/frontmatter_spec_bootstrap_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/valid/implementation_contract_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/valid/normative_spec_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/valid/orientation_router_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/valid/release_metadata_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/valid/target_sections_resolved_valid/a.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/valid/target_sections_resolved_valid/b.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/valid/template_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/valid/unresolved_reference_optional_edge_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/valid/untemplated_document_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/fixtures/valid/yaml_1_2_plain_words_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/FRONTMATTER_INDEX_PROVENANCE.json +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/ai_instruction_risk.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/authoring.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/body_tether.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/common/__init__.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/common/errors.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/core.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/corpus_selection.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/frontmatter_index.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/harness_errors.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/inventory.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/markdown/MARKDOWN_PARSE_RESULT_schema.json +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/markdown/MARKDOWN_PROVENANCE.json +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/markdown/USER_MANUAL.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/markdown/__init__.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/markdown/api.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/markdown/cli/__init__.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/markdown/cli/__main__.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/markdown/cli/dump_sections.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/markdown/collectors_phase8/__init__.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/markdown/collectors_phase8/blockquotes.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/markdown/collectors_phase8/codeblocks.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/markdown/collectors_phase8/footnotes.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/markdown/collectors_phase8/frontmatter.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/markdown/collectors_phase8/headings.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/markdown/collectors_phase8/html.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/markdown/collectors_phase8/html_collector.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/markdown/collectors_phase8/images.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/markdown/collectors_phase8/inline_code.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/markdown/collectors_phase8/links.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/markdown/collectors_phase8/lists.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/markdown/collectors_phase8/math.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/markdown/collectors_phase8/paragraphs.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/markdown/collectors_phase8/tables.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/markdown/collectors_phase8/tasklists.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/markdown/fetchers/__init__.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/markdown/fetchers/preview.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/markdown/fetchers/url_fetcher.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/markdown/security/__init__.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/markdown/security/scanner.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/markdown/utils/__init__.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/markdown/utils/profiling.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/markdown/utils/section.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/markdown/utils/text_normalization.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/markdown/utils/timeout.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/markdown/utils/token_warehouse.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/markdown/utils/url_utils.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/AI_START_HERE.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/DAILY_USE_GUIDE.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/FRONTMATTERING_FRONTMATTER_SPEC_v0_1_5.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/__init__.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/examples/no_frontmatter_demo/00_AI_START_HERE.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/examples/no_frontmatter_demo/10_NORMATIVE_SPEC.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/examples/no_frontmatter_demo/20_IMPLEMENTATION_CONTRACT.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/examples/no_frontmatter_demo/30_TEST_SUFFICIENCY.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/examples/no_frontmatter_demo/40_EVIDENCE_RECORD.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/examples/no_frontmatter_demo/50_RELEASE_DECISION.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/examples/power_demo/00_AI_START_HERE.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/examples/power_demo/10_NORMATIVE_SPEC.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/examples/power_demo/20_IMPLEMENTATION_CONTRACT.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/examples/power_demo/30_TEST_SUFFICIENCY.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/examples/power_demo/40_EVIDENCE_RECORD.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/examples/power_demo/50_RELEASE_DECISION.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/adoption_digest_mismatch_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/adoption_record_on_wrong_role_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/adoption_record_shape_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/adoption_without_bootstrap_receipt_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/authored_go_used_as_evidence_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/body_tether_body_digest_mismatch_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/body_tether_fields_mismatch_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/body_tether_malformed_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/body_tether_missing_under_trust_rejected/.frontmattering/project.yaml +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/body_tether_missing_under_trust_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/body_tether_scope_selector_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/body_tether_unknown_canonicalization_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/bootstrap_receipt_shape_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/bootstrap_without_validator_blocks_adoption/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/claim_boundary_missing_does_not_verify_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/claimed_state_overreach_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/clause_enforcement_drift_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/container_cardinality_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/deepest_intention_missing_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/downstream_phase_without_upstream_evidence_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/duplicate_document_id_rejected/a.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/duplicate_document_id_rejected/b.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/duplicate_yaml_key_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/evidence_edge_digest_missing_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/evidence_reference_used_as_truth_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/external_edge_locator_missing_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/external_edge_set_id_missing_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/extracted_catalog_drift_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/fixture_reverse_reachability_drift_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/frontmatter_only_view_incomplete_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/frontmatter_registry_conflict_blocks/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/frontmatter_view_body_truth_overclaim_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/generated_state_in_frontmatter_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/green_checks_conflation_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/historical_digest_used_as_current_evidence_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/implementation_start_gate_bypass_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/intention_positive_negative_conflation_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/legacy_string_machine_surface_requires_mapping/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/load_order_inversion_flagged/a.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/load_order_inversion_flagged/b.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/machine_surface_identity_incomplete_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/migration_field_drop_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/migration_silent_coercion_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/missing_frontmatter_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/non_root_exception_or_silent_fallback_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/nonowner_redefines_intention_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/output_format_conflation_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/parser_byte_ranges_missing_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/parser_partial_model_on_error_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/parser_source_locator_missing_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/projected_field_without_origin_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/projection_rebuild_nondeterminism_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/projection_row_without_source_locator_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/relationship_resolution_scope_missing_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/relationship_resolution_scope_unknown_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/relationship_semantics_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/relationship_target_unresolved_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/release_surface_digest_missing_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/required_dependency_cycle_rejected/a.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/required_dependency_cycle_rejected/b.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/routing_tag_not_in_task_catalog_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/routing_tag_router_not_in_scope_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/scope_on_nonsupersedes_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/stale_bootstrap_receipt_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/stale_validation_result_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/supersedes_without_scope_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/target_section_not_found_rejected/a.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/target_section_not_found_rejected/b.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/target_sections_on_external_edge_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/task_scoped_defects_filtering/router.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/task_scoped_defects_filtering/selected.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/task_scoped_defects_filtering/skipped.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/template_claims_normative_authority_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/two_documents_own_same_intention_rejected/a.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/two_documents_own_same_intention_rejected/b.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/undefined_conditional_token_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/undefined_type_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/unknown_authority_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/unknown_document_role_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/unknown_field_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/unknown_root_block_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/unresolved_reference_on_required_edge_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/unsupported_schema_version_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/untemplated_frontmatter_bypass_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/validator_passes_conflation_rejected/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/invalid/yaml_1_1_boolean_words_not_coerced/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/pilot_security/blockquote.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/pilot_security/code_fence.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/pilot_security/dangerous_html.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/pilot_security/dangerous_uri.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/pilot_security/direct_instruction.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/pilot_security/generated_resource_limits.yaml +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/pilot_security/indirect_instruction.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/pilot_security/legitimate_security_discussion.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/pilot_security/link.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/pilot_security/table.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/valid/adoption_locator_trigger_word_is_data_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/valid/body_tether_fresh_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/valid/bootstrap_validation_receipt_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/valid/claim_prose_substrings_are_not_verdicts_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/valid/companion_and_appendix_edges_valid/a.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/valid/companion_and_appendix_edges_valid/b.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/valid/document_binding_to_external_intention_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/valid/document_realizing_external_intention_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/valid/document_referencing_external_intention_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/valid/evidence_record_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/valid/evidence_support_substrings_are_not_proof_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/valid/external_document_set_edge_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/valid/frontmatter_adoption_record_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/valid/frontmatter_projection_mapping_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/valid/frontmatter_spec_bootstrap_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/valid/implementation_contract_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/valid/normative_spec_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/valid/orientation_router_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/valid/release_metadata_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/valid/target_sections_resolved_valid/a.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/valid/target_sections_resolved_valid/b.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/valid/template_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/valid/unresolved_reference_optional_edge_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/valid/untemplated_document_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/fixtures/valid/yaml_1_2_plain_words_valid/doc.md +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/generated/FRONTMATTERING_FRONTMATTER_SCHEMA.schema.json +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/tools/__init__.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/tools/check_frontmatter_sqlite_index.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/tools/check_kernel_cleanliness.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/tools/check_kernel_exception_taxonomy.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/tools/check_markdown_parser_adoption.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/tools/check_projection_consistency.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/tools/check_python_syntax.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/tools/check_report_quality.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/tools/finding_registry.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/tools/frontmattering_cli.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/tools/generate_frontmatter_schema.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/tools/kernel_reporting.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/tools/make_fixtures.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/tools/pack_kernel_distro.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/tools/test_verify_kernel.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/tools/validate_frontmatters.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/tools/verify_kernel.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/resources/workflow-docs-manifest.yaml +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/schema_projection.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/speccompile.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering/validator.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering.egg-info/dependency_links.txt +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering.egg-info/entry_points.txt +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/frontmattering.egg-info/top_level.txt +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/generated/FRONTMATTERING_FRONTMATTER_SCHEMA.schema.json +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/tools/check_frontmatter_sqlite_index.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/tools/check_kernel_cleanliness.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/tools/check_kernel_exception_taxonomy.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/tools/check_markdown_parser_adoption.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/tools/check_projection_consistency.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/tools/check_python_syntax.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/tools/check_report_quality.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/tools/finding_registry.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/tools/frontmattering_cli.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/tools/generate_frontmatter_schema.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/tools/kernel_reporting.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/tools/make_fixtures.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/tools/pack_kernel_distro.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/tools/test_verify_kernel.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/tools/validate_frontmatters.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/tools/verify_kernel.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/kernel/workflow-docs-manifest.yaml +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/setup.cfg +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/tests/test_frontmattering_p0_regressions.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/tests/test_red_body_tether.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/tests/test_red_cli_trust_adoption.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/tests/test_red_frontmattering_rt_n.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/tests/test_red_runtime_parity.py +0 -0
- {frontmattering-0.4.2 → frontmattering-0.4.4}/tests/test_red_tether_scope.py +0 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
blank_issues_enabled: false
|
|
2
|
+
contact_links:
|
|
3
|
+
- name: Security report
|
|
4
|
+
url: https://github.com/frontmattering/frontmattering/blob/main/SECURITY.md
|
|
5
|
+
about: Report a vulnerability privately per SECURITY.md (do not open a public issue).
|
|
6
|
+
- name: Licensing / commercial enquiry
|
|
7
|
+
url: mailto:hello@frontmattering.com
|
|
8
|
+
about: Questions about professional, organizational, or commercial licensing.
|
|
9
|
+
- name: Support and usage help
|
|
10
|
+
url: https://github.com/frontmattering/frontmattering/blob/main/SUPPORT.md
|
|
11
|
+
about: How to get help and what support is offered.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
name: Documentation confusion
|
|
2
|
+
description: Something in the docs, README, or CLI output was unclear or misleading.
|
|
3
|
+
title: "[docs] "
|
|
4
|
+
labels: ["documentation"]
|
|
5
|
+
body:
|
|
6
|
+
- type: input
|
|
7
|
+
id: where
|
|
8
|
+
attributes:
|
|
9
|
+
label: Where (file / URL / command)
|
|
10
|
+
placeholder: "e.g. README.md 'First-hour path', or `frontmattering brief` output"
|
|
11
|
+
validations:
|
|
12
|
+
required: true
|
|
13
|
+
- type: textarea
|
|
14
|
+
id: expected
|
|
15
|
+
attributes:
|
|
16
|
+
label: What you expected vs. what the docs said
|
|
17
|
+
validations:
|
|
18
|
+
required: true
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
name: Fresh-start pilot report
|
|
2
|
+
description: Report a cold-start run on your own Markdown corpus. Facts only — no fix required.
|
|
3
|
+
title: "[pilot] "
|
|
4
|
+
labels: ["pilot-report"]
|
|
5
|
+
body:
|
|
6
|
+
- type: markdown
|
|
7
|
+
attributes:
|
|
8
|
+
value: |
|
|
9
|
+
Thanks for piloting Frontmattering. Report only what you observed — this is evidence collection, not a support request.
|
|
10
|
+
- type: input
|
|
11
|
+
id: env
|
|
12
|
+
attributes:
|
|
13
|
+
label: OS / Python version
|
|
14
|
+
placeholder: "e.g. Ubuntu 24.04 / Python 3.12.3"
|
|
15
|
+
validations:
|
|
16
|
+
required: true
|
|
17
|
+
- type: dropdown
|
|
18
|
+
id: install
|
|
19
|
+
attributes:
|
|
20
|
+
label: "`pip install frontmattering` result"
|
|
21
|
+
options: ["Succeeded", "Failed"]
|
|
22
|
+
validations:
|
|
23
|
+
required: true
|
|
24
|
+
- type: dropdown
|
|
25
|
+
id: doctor
|
|
26
|
+
attributes:
|
|
27
|
+
label: "`frontmattering doctor` result"
|
|
28
|
+
options: ["PASS", "FAIL", "Did not run"]
|
|
29
|
+
validations:
|
|
30
|
+
required: true
|
|
31
|
+
- type: input
|
|
32
|
+
id: corpus
|
|
33
|
+
attributes:
|
|
34
|
+
label: Number of Markdown files in your corpus
|
|
35
|
+
validations:
|
|
36
|
+
required: true
|
|
37
|
+
- type: textarea
|
|
38
|
+
id: flow
|
|
39
|
+
attributes:
|
|
40
|
+
label: init → promote → tether → validate → brief outcome
|
|
41
|
+
placeholder: "What happened at each step; the validate verdict (GO/NO-GO) and brief status (FRESH/STALE/UNTETHERED)."
|
|
42
|
+
validations:
|
|
43
|
+
required: true
|
|
44
|
+
- type: textarea
|
|
45
|
+
id: first_error
|
|
46
|
+
attributes:
|
|
47
|
+
label: First confusing error message (verbatim, if any)
|
|
48
|
+
- type: dropdown
|
|
49
|
+
id: understood
|
|
50
|
+
attributes:
|
|
51
|
+
label: Did you understand FRESH / STALE / UNTETHERED?
|
|
52
|
+
options: ["Yes, all three", "Partly", "No"]
|
|
53
|
+
validations:
|
|
54
|
+
required: true
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
name: Runtime gate / CI report
|
|
2
|
+
description: Report using the validate-only runtime artifact or the frontmattering gate in CI.
|
|
3
|
+
title: "[runtime] "
|
|
4
|
+
labels: ["runtime-gate"]
|
|
5
|
+
body:
|
|
6
|
+
- type: input
|
|
7
|
+
id: env
|
|
8
|
+
attributes:
|
|
9
|
+
label: OS / Python version / CI provider
|
|
10
|
+
placeholder: "e.g. GitHub Actions ubuntu-latest / Python 3.11"
|
|
11
|
+
validations:
|
|
12
|
+
required: true
|
|
13
|
+
- type: textarea
|
|
14
|
+
id: invocation
|
|
15
|
+
attributes:
|
|
16
|
+
label: How you invoked the gate
|
|
17
|
+
placeholder: "e.g. python frontmattering-runtime.pyz validate docs --format json"
|
|
18
|
+
validations:
|
|
19
|
+
required: true
|
|
20
|
+
- type: dropdown
|
|
21
|
+
id: outcome
|
|
22
|
+
attributes:
|
|
23
|
+
label: Gate outcome
|
|
24
|
+
options: ["Passed as expected", "Failed as expected", "Unexpected pass", "Unexpected fail", "Crashed / error"]
|
|
25
|
+
validations:
|
|
26
|
+
required: true
|
|
27
|
+
- type: textarea
|
|
28
|
+
id: detail
|
|
29
|
+
attributes:
|
|
30
|
+
label: Output / error (verbatim)
|
|
@@ -44,6 +44,8 @@ jobs:
|
|
|
44
44
|
- name: Exception taxonomy
|
|
45
45
|
run: python kernel/tools/check_kernel_exception_taxonomy.py
|
|
46
46
|
- name: Pilot-readiness contract
|
|
47
|
+
env:
|
|
48
|
+
FRONTMATTERING_PUBLIC_SURFACE: "1"
|
|
47
49
|
run: python kernel/tools/check_pilot_readiness.py
|
|
48
50
|
- name: Release cleanliness
|
|
49
51
|
run: python kernel/tools/check_kernel_cleanliness.py --release
|
|
@@ -59,9 +61,11 @@ jobs:
|
|
|
59
61
|
with:
|
|
60
62
|
python-version: '3.12'
|
|
61
63
|
- name: Build tooling
|
|
62
|
-
run: python -m pip install --upgrade pip build
|
|
64
|
+
run: python -m pip install --upgrade pip build twine
|
|
63
65
|
- name: Build distributions
|
|
64
66
|
run: python -m build
|
|
67
|
+
- name: Twine check
|
|
68
|
+
run: python -m twine check dist/*
|
|
65
69
|
- name: Inspect and smoke-test wheel
|
|
66
70
|
run: |
|
|
67
71
|
python - <<'PY'
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
name: publish
|
|
2
|
+
|
|
3
|
+
# Trusted Publishing to PyPI via OIDC — no long-lived API tokens.
|
|
4
|
+
#
|
|
5
|
+
# ONE-TIME OWNER SETUP (required before this can succeed):
|
|
6
|
+
# 1. PyPI -> project "frontmattering" -> Publishing -> add a GitHub publisher:
|
|
7
|
+
# owner: frontmattering, repo: frontmattering,
|
|
8
|
+
# workflow: publish.yml, environment: pypi
|
|
9
|
+
# 2. GitHub -> repo Settings -> Environments -> create environment "pypi".
|
|
10
|
+
#
|
|
11
|
+
# Until that setup exists this runs on manual dispatch only, so it never fails
|
|
12
|
+
# spuriously. Once configured, publish from tags by adding:
|
|
13
|
+
# on:
|
|
14
|
+
# push:
|
|
15
|
+
# tags: ["v*"]
|
|
16
|
+
on:
|
|
17
|
+
workflow_dispatch:
|
|
18
|
+
inputs:
|
|
19
|
+
tag:
|
|
20
|
+
description: Tag to build and publish (e.g. v0.4.4)
|
|
21
|
+
required: true
|
|
22
|
+
|
|
23
|
+
permissions:
|
|
24
|
+
contents: read
|
|
25
|
+
|
|
26
|
+
jobs:
|
|
27
|
+
publish:
|
|
28
|
+
runs-on: ubuntu-latest
|
|
29
|
+
environment: pypi
|
|
30
|
+
permissions:
|
|
31
|
+
id-token: write
|
|
32
|
+
steps:
|
|
33
|
+
- uses: actions/checkout@v4
|
|
34
|
+
with:
|
|
35
|
+
ref: ${{ inputs.tag }}
|
|
36
|
+
- uses: actions/setup-python@v5
|
|
37
|
+
with:
|
|
38
|
+
python-version: "3.12"
|
|
39
|
+
- name: Build and check distributions
|
|
40
|
+
run: |
|
|
41
|
+
python -m pip install --upgrade pip build twine
|
|
42
|
+
python -m build
|
|
43
|
+
python -m twine check dist/*
|
|
44
|
+
- name: Publish to PyPI (OIDC Trusted Publishing)
|
|
45
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 0.4.4
|
|
4
|
+
|
|
5
|
+
- **Fixed the published first-hour path.** The quickstart now initializes at the repository root (`frontmattering init .`); the previous `init docs` form left the promoted document outside the selected corpus, and `promote docs/*.md` passed multiple files to a single-file command.
|
|
6
|
+
- **`promote --in-place` is now transactional.** Promoting a file outside the selected corpus fails before any write with `FRONTMATTERING-AUTHORING-TARGET-OUTSIDE-CORPUS`, and any post-write failure restores the file to its original bytes — no command mutates an input file and then exits nonzero.
|
|
7
|
+
- **Validate-only runtime CLI corrected.** `validate --help` prints usage and exits 0 (previously returned a vacuous GO report over zero paths); `validate` with no path is now a usage error instead of silently validating the current directory.
|
|
8
|
+
- `frontmattering validate` with no paths prints an explicit "validating current working directory" notice.
|
|
9
|
+
- Added a `markdown-plugins` optional extra (`pip install "frontmattering[markdown-plugins]"`) so the optional markdown-it plugins are a named, opt-in capability.
|
|
10
|
+
- Added `Commercial` and `License` project URLs.
|
|
11
|
+
- Removed stale v0.4.2 release-note artifacts from the source distribution.
|
|
12
|
+
- Added a PyPI Trusted Publishing workflow (OIDC) and `twine check` in CI; CI is green across Python 3.10–3.13 (fixed `benchmark_harness` and the `.git`-inclusive distribution-receipt check; scoped the public-surface pilot-readiness gate).
|
|
13
|
+
- No frontmatter-schema, validator trust-semantics, or canonical-model (`v0.1.5`) changes.
|
|
14
|
+
|
|
15
|
+
## 0.4.3
|
|
16
|
+
|
|
17
|
+
- README/PyPI long description: install instruction is now `pip install frontmattering` instead of a local wheel path.
|
|
18
|
+
- Public license summary now states the 30-day evaluation permission (LICENSE.md §2), not only the paid-commercial requirement.
|
|
19
|
+
- Fixed `frontmattering doctor`: the AI_INDEX currency check embedded Python- and terminal-width-sensitive argparse output (usage-line wrapping and positional `.required`), producing a spurious FAIL on any environment other than the one the index was frozen on. Index generation is now deterministic — whitespace-normalized command signatures and `required` derived from `nargs` — so `doctor` passes across supported Python versions.
|
|
20
|
+
- Removed the residual `-pypi-clear` publication marker from internal version strings.
|
|
21
|
+
- No validator, frontmatter-schema, runtime-parity, or canonical-model (`v0.1.5`) changes.
|
|
22
|
+
- Both wheel and sdist are published for this version.
|
|
23
|
+
|
|
24
|
+
## 0.4.2
|
|
25
|
+
|
|
26
|
+
- Removed the mistaken MIT component license expression after confirming the package contains Frontmattering-owned source and normal runtime dependencies, not vendored third-party source.
|
|
27
|
+
- Replaced third-party notices with a dependency-only notice for PyYAML and markdown-it-py.
|
|
28
|
+
- Removed the v0.4.1 publication hold.
|
|
29
|
+
- Preserved clean public identity: package, import package, and CLI are all `frontmattering`.
|
|
30
|
+
|
|
31
|
+
## 0.4.1
|
|
32
|
+
|
|
33
|
+
- Corrected public notices and added 30-day professional/organizational evaluation permission.
|
|
34
|
+
- Added verbatim redistribution permission for unmodified official package artifacts.
|
|
35
|
+
- Marked publication as held pending third-party provenance clarification; superseded by v0.4.2 after code ownership was confirmed.
|
|
36
|
+
|
|
37
|
+
## 0.4.0
|
|
38
|
+
|
|
39
|
+
- Clean public rebrand to Frontmattering.
|
|
40
|
+
- Project package, import package, and CLI are now `frontmattering`.
|
|
41
|
+
- Removed old public CLI/import/package aliases.
|
|
42
|
+
- Replaced the previous permissive project license with Frontmattering Individual Use License v1.0 plus commercial-license requirement.
|
|
43
|
+
- Preserved validator/runtime/body-tether/trust-profile behavior from the internal v0.3.6 line.
|
|
@@ -14,9 +14,6 @@ include SUPPORT.md
|
|
|
14
14
|
include THIRD_PARTY_NOTICES.md
|
|
15
15
|
include TRADEMARKS.md
|
|
16
16
|
include REPOSITORY_STATUS.md
|
|
17
|
-
include RELEASE_NOTES_v0_*.md
|
|
18
|
-
include FRONTMATTERING_v0_4_2_RELEASE_SUMMARY.md
|
|
19
|
-
include FRONTMATTERING_V0_4_2_DELIVERY_NOTE.md
|
|
20
17
|
recursive-include .github *.md *.yml *.yaml
|
|
21
18
|
recursive-include benchmarks/cold_start_v1 *.md *.yaml *.json *.py
|
|
22
19
|
recursive-include contracts *.md
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: frontmattering
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.4
|
|
4
4
|
Summary: Governed frontmatter, freshness tethers, and validate-only runtime gates for agent-facing Markdown
|
|
5
5
|
Author: Lasse T.
|
|
6
6
|
License-Expression: LicenseRef-FRONTMATTERING-Individual-Use-1.2
|
|
7
7
|
Project-URL: Homepage, https://frontmattering.com
|
|
8
8
|
Project-URL: Repository, https://github.com/frontmattering/frontmattering
|
|
9
9
|
Project-URL: Issues, https://github.com/frontmattering/frontmattering/issues
|
|
10
|
+
Project-URL: Commercial, https://github.com/frontmattering/frontmattering/blob/main/COMMERCIAL_LICENSE_REQUIRED.md
|
|
11
|
+
Project-URL: License, https://github.com/frontmattering/frontmattering/blob/main/LICENSE.md
|
|
10
12
|
Keywords: markdown,frontmatter,documentation,governance,ai-agents,validation
|
|
11
13
|
Classifier: Development Status :: 3 - Alpha
|
|
12
14
|
Classifier: Environment :: Console
|
|
@@ -28,6 +30,8 @@ License-File: THIRD_PARTY_NOTICES.md
|
|
|
28
30
|
License-File: TRADEMARKS.md
|
|
29
31
|
Requires-Dist: PyYAML>=6.0
|
|
30
32
|
Requires-Dist: markdown-it-py>=4.0.0
|
|
33
|
+
Provides-Extra: markdown-plugins
|
|
34
|
+
Requires-Dist: mdit-py-plugins>=0.4.0; extra == "markdown-plugins"
|
|
31
35
|
Dynamic: license-file
|
|
32
36
|
|
|
33
37
|
# Frontmattering
|
|
@@ -36,30 +40,34 @@ Frontmattering makes Markdown safer for agents.
|
|
|
36
40
|
|
|
37
41
|
It adds governed frontmatter, task routing, body/frontmatter freshness tethers, and a vendorable validate-only runtime gate so an agent can consume a compact brief without silently relying on stale documentation.
|
|
38
42
|
|
|
39
|
-
## Install
|
|
43
|
+
## Install
|
|
40
44
|
|
|
41
45
|
```bash
|
|
42
|
-
python -m pip install frontmattering
|
|
46
|
+
python -m pip install frontmattering
|
|
43
47
|
frontmattering --version
|
|
44
48
|
frontmattering doctor
|
|
45
49
|
```
|
|
46
50
|
|
|
47
51
|
## First-hour path
|
|
48
52
|
|
|
53
|
+
Initialize governance at your repository root; your Markdown lives under `docs/` (the default corpus is `docs/**/*.md`). `promote` takes one file per call, and exactly one document is the router.
|
|
54
|
+
|
|
49
55
|
```bash
|
|
50
|
-
frontmattering init
|
|
56
|
+
frontmattering init . --set-id MYDOCS --title "My docs"
|
|
51
57
|
frontmattering promote docs/INDEX.md --profile router --in-place
|
|
52
|
-
frontmattering promote docs
|
|
53
|
-
frontmattering tether update --add
|
|
54
|
-
frontmattering validate
|
|
55
|
-
frontmattering brief
|
|
58
|
+
frontmattering promote docs/GUIDE.md --profile guide --in-place
|
|
59
|
+
frontmattering tether update --add .
|
|
60
|
+
frontmattering validate .
|
|
61
|
+
frontmattering brief .
|
|
56
62
|
```
|
|
57
63
|
|
|
64
|
+
Promote each additional document with its own `frontmattering promote <file> --profile guide --in-place` call. Promoting a file that is not inside the selected corpus fails before the file is touched (`FRONTMATTERING-AUTHORING-TARGET-OUTSIDE-CORPUS`).
|
|
65
|
+
|
|
58
66
|
For strict freshness enforcement, set `validation_profile: trust` in `.frontmattering/project.yaml`, then run:
|
|
59
67
|
|
|
60
68
|
```bash
|
|
61
|
-
frontmattering validate
|
|
62
|
-
frontmattering brief
|
|
69
|
+
frontmattering validate .
|
|
70
|
+
frontmattering brief .
|
|
63
71
|
```
|
|
64
72
|
|
|
65
73
|
## Runtime gate
|
|
@@ -73,7 +81,7 @@ The runtime artifact is validate-only. It does not expose init, promote, new, in
|
|
|
73
81
|
|
|
74
82
|
## License
|
|
75
83
|
|
|
76
|
-
Frontmattering is source-available. It is free for individual
|
|
84
|
+
Frontmattering is source-available. It is free for individual personal use within the scope of `LICENSE.md`. Professional, organizational, employer, client, CI/CD, hosted, managed-service, platform, consulting, or revenue-connected use is permitted for a 30-day evaluation period under `LICENSE.md`; continued use after the evaluation requires a paid commercial license.
|
|
77
85
|
|
|
78
86
|
Frontmattering is not open-source software under the Open Source Definition because professional and organizational use is restricted without a commercial license.
|
|
79
87
|
|
|
@@ -88,4 +96,4 @@ A `STALE` or `UNTETHERED` summary must not be relied on without reading the body
|
|
|
88
96
|
|
|
89
97
|
## Publication status
|
|
90
98
|
|
|
91
|
-
This v0.4.
|
|
99
|
+
This v0.4.4 package hardens the first-hour path: the quickstart initializes at the repository root, `promote --in-place` is transactional (it fails before mutation when a target is outside the selected corpus, `FRONTMATTERING-AUTHORING-TARGET-OUTSIDE-CORPUS`), and the validate-only runtime corrects its `--help` and no-path behavior. No frontmatter-schema or canonical-model (`v0.1.5`) changes. Custom license text should still receive legal review before paid commercial sales.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Frontmattering
|
|
2
|
+
|
|
3
|
+
Frontmattering makes Markdown safer for agents.
|
|
4
|
+
|
|
5
|
+
It adds governed frontmatter, task routing, body/frontmatter freshness tethers, and a vendorable validate-only runtime gate so an agent can consume a compact brief without silently relying on stale documentation.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
python -m pip install frontmattering
|
|
11
|
+
frontmattering --version
|
|
12
|
+
frontmattering doctor
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## First-hour path
|
|
16
|
+
|
|
17
|
+
Initialize governance at your repository root; your Markdown lives under `docs/` (the default corpus is `docs/**/*.md`). `promote` takes one file per call, and exactly one document is the router.
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
frontmattering init . --set-id MYDOCS --title "My docs"
|
|
21
|
+
frontmattering promote docs/INDEX.md --profile router --in-place
|
|
22
|
+
frontmattering promote docs/GUIDE.md --profile guide --in-place
|
|
23
|
+
frontmattering tether update --add .
|
|
24
|
+
frontmattering validate .
|
|
25
|
+
frontmattering brief .
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Promote each additional document with its own `frontmattering promote <file> --profile guide --in-place` call. Promoting a file that is not inside the selected corpus fails before the file is touched (`FRONTMATTERING-AUTHORING-TARGET-OUTSIDE-CORPUS`).
|
|
29
|
+
|
|
30
|
+
For strict freshness enforcement, set `validation_profile: trust` in `.frontmattering/project.yaml`, then run:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
frontmattering validate .
|
|
34
|
+
frontmattering brief .
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Runtime gate
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
frontmattering runtime pack --out frontmattering-runtime.pyz
|
|
41
|
+
python frontmattering-runtime.pyz validate docs --format json
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
The runtime artifact is validate-only. It does not expose init, promote, new, index, tether update, or authoring surfaces.
|
|
45
|
+
|
|
46
|
+
## License
|
|
47
|
+
|
|
48
|
+
Frontmattering is source-available. It is free for individual personal use within the scope of `LICENSE.md`. Professional, organizational, employer, client, CI/CD, hosted, managed-service, platform, consulting, or revenue-connected use is permitted for a 30-day evaluation period under `LICENSE.md`; continued use after the evaluation requires a paid commercial license.
|
|
49
|
+
|
|
50
|
+
Frontmattering is not open-source software under the Open Source Definition because professional and organizational use is restricted without a commercial license.
|
|
51
|
+
|
|
52
|
+
Runtime dependency status is recorded in `THIRD_PARTY_NOTICES.md`; project notices are recorded in `NOTICE`.
|
|
53
|
+
|
|
54
|
+
## Claim boundary
|
|
55
|
+
|
|
56
|
+
A `FRESH` brief means the current body bytes and canonical trust-bearing frontmatter fields match their mechanical tether. It does not prove semantic summary correctness, human approval, external adoption, or production suitability.
|
|
57
|
+
|
|
58
|
+
A `STALE` or `UNTETHERED` summary must not be relied on without reading the body.
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
## Publication status
|
|
62
|
+
|
|
63
|
+
This v0.4.4 package hardens the first-hour path: the quickstart initializes at the repository root, `promote --in-place` is transactional (it fails before mutation when a target is outside the selected corpus, `FRONTMATTERING-AUTHORING-TARGET-OUTSIDE-CORPUS`), and the validate-only runtime corrects its `--help` and no-path behavior. No frontmatter-schema or canonical-model (`v0.1.5`) changes. Custom license text should still receive legal review before paid commercial sales.
|
|
@@ -19,7 +19,7 @@ def main()->int:
|
|
|
19
19
|
ap=argparse.ArgumentParser(); ap.add_argument('--output',type=Path,required=True); ns=ap.parse_args()
|
|
20
20
|
out=ns.output.resolve()
|
|
21
21
|
if out.exists(): shutil.rmtree(out)
|
|
22
|
-
frontmattering_arm=out/'
|
|
22
|
+
frontmattering_arm=out/'frontmattering'; baseline=out/'baseline'; frontmattering_arm.mkdir(parents=True); baseline.mkdir(parents=True)
|
|
23
23
|
records=[]
|
|
24
24
|
for src in sorted(SOURCE.glob('*.md')):
|
|
25
25
|
raw=src.read_bytes(); _,body=split_frontmatter(raw)
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"description": "Process exit code documented by the command implementation.",
|
|
63
63
|
"type": "int"
|
|
64
64
|
},
|
|
65
|
-
"signature": "frontmattering brief [-h] [--task TASK]
|
|
65
|
+
"signature": "frontmattering brief [-h] [--task TASK] [--section {summary,blocks,traps,limits,do-not,trust,reading-order,defects,claim-boundary}] [--include-dev] [--format {markdown,json}] [paths ...]",
|
|
66
66
|
"summary": "==SUPPRESS==",
|
|
67
67
|
"type": "function"
|
|
68
68
|
},
|
|
@@ -188,7 +188,7 @@
|
|
|
188
188
|
"description": "Process exit code documented by the command implementation.",
|
|
189
189
|
"type": "int"
|
|
190
190
|
},
|
|
191
|
-
"signature": "frontmattering index [-h]
|
|
191
|
+
"signature": "frontmattering index [-h] {build,rebuild,update,check,status,delete} ...",
|
|
192
192
|
"summary": "==SUPPRESS==",
|
|
193
193
|
"type": "function"
|
|
194
194
|
},
|
|
@@ -232,7 +232,7 @@
|
|
|
232
232
|
"description": "Process exit code documented by the command implementation.",
|
|
233
233
|
"type": "int"
|
|
234
234
|
},
|
|
235
|
-
"signature": "frontmattering init [-h] --set-id SET_ID --title TITLE [--force]
|
|
235
|
+
"signature": "frontmattering init [-h] --set-id SET_ID --title TITLE [--force] directory",
|
|
236
236
|
"summary": "==SUPPRESS==",
|
|
237
237
|
"type": "function"
|
|
238
238
|
},
|
|
@@ -360,7 +360,7 @@
|
|
|
360
360
|
"description": "Process exit code documented by the command implementation.",
|
|
361
361
|
"type": "int"
|
|
362
362
|
},
|
|
363
|
-
"signature": "frontmattering new [-h]
|
|
363
|
+
"signature": "frontmattering new [-h] [--profile {contract,evidence,guide,registry,release,router,spec}] --title TITLE [--summary SUMMARY] [--force] path",
|
|
364
364
|
"summary": "==SUPPRESS==",
|
|
365
365
|
"type": "function"
|
|
366
366
|
},
|
|
@@ -416,7 +416,7 @@
|
|
|
416
416
|
"description": "Process exit code documented by the command implementation.",
|
|
417
417
|
"type": "int"
|
|
418
418
|
},
|
|
419
|
-
"signature": "frontmattering parse [-h] [--output OUTPUT] [--batch]
|
|
419
|
+
"signature": "frontmattering parse [-h] [--output OUTPUT] [--batch] [--security-profile {permissive,moderate,strict}] [--allows-html] path",
|
|
420
420
|
"summary": "==SUPPRESS==",
|
|
421
421
|
"type": "function"
|
|
422
422
|
},
|
|
@@ -494,7 +494,7 @@
|
|
|
494
494
|
"description": "Process exit code documented by the command implementation.",
|
|
495
495
|
"type": "int"
|
|
496
496
|
},
|
|
497
|
-
"signature": "frontmattering promote [-h]
|
|
497
|
+
"signature": "frontmattering promote [-h] --profile {contract,evidence,guide,registry,release,router,spec} [--title TITLE] [--output OUTPUT] [--in-place] [--check] [--format {markdown,json}] input",
|
|
498
498
|
"summary": "==SUPPRESS==",
|
|
499
499
|
"type": "function"
|
|
500
500
|
},
|
|
@@ -545,7 +545,7 @@
|
|
|
545
545
|
"description": "Process exit code documented by the command implementation.",
|
|
546
546
|
"type": "int"
|
|
547
547
|
},
|
|
548
|
-
"signature": "frontmattering query [-h] [--index INDEX] [--task TASK]
|
|
548
|
+
"signature": "frontmattering query [-h] [--index INDEX] [--task TASK] [--authority AUTHORITY] [--role ROLE] [--target TARGET]",
|
|
549
549
|
"summary": "==SUPPRESS==",
|
|
550
550
|
"type": "function"
|
|
551
551
|
},
|
|
@@ -615,7 +615,7 @@
|
|
|
615
615
|
"description": "Process exit code documented by the command implementation.",
|
|
616
616
|
"type": "int"
|
|
617
617
|
},
|
|
618
|
-
"signature": "frontmattering schema [-h] [--output OUTPUT] [--check PATH] [--vscode]
|
|
618
|
+
"signature": "frontmattering schema [-h] [--output OUTPUT] [--check PATH] [--vscode] [paths ...]",
|
|
619
619
|
"summary": "==SUPPRESS==",
|
|
620
620
|
"type": "function"
|
|
621
621
|
},
|
|
@@ -64,7 +64,7 @@ template_contract:
|
|
|
64
64
|
|
|
65
65
|
spec: FRONTMATTERING_FRONTMATTER_SPEC_v0_1_5.md
|
|
66
66
|
spec_sha256: cb4f431d6326a04a2b30d5d1b4a99c301342b017799953b12740acf5b110b023
|
|
67
|
-
kernel_files_sha256:
|
|
67
|
+
kernel_files_sha256: 9b7d957b66556be1065436769851956afec7cd179cd6c8a85e9aa1e4457aa58e
|
|
68
68
|
|
|
69
69
|
classes_total: 101
|
|
70
70
|
ok: 101 missing_fixture: 0 wrong_finding: 0 not_rejected: 0 rejected_valid: 0
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.4.4"
|
|
@@ -138,6 +138,8 @@ def selected_format(args: argparse.Namespace) -> str:
|
|
|
138
138
|
|
|
139
139
|
|
|
140
140
|
def command_validate(args: argparse.Namespace) -> int:
|
|
141
|
+
if not args.paths:
|
|
142
|
+
print(f"No paths supplied; validating current working directory: {Path.cwd()}", file=sys.stderr)
|
|
141
143
|
try:
|
|
142
144
|
report = build_report(args.paths)
|
|
143
145
|
except ToolingError as exc:
|
|
@@ -719,7 +721,7 @@ def _parse_one_document(path: Path, args: argparse.Namespace) -> tuple[dict, int
|
|
|
719
721
|
metadata.pop("security", None)
|
|
720
722
|
payload = {
|
|
721
723
|
"schema_version": "frontmattering_document_ir/v0_3",
|
|
722
|
-
"distribution_version": "0.4.
|
|
724
|
+
"distribution_version": "0.4.4",
|
|
723
725
|
"canonical_model_version": "0.1.5",
|
|
724
726
|
"source": {
|
|
725
727
|
"path": str(path),
|
|
@@ -772,7 +774,7 @@ def command_parse(args: argparse.Namespace) -> int:
|
|
|
772
774
|
dest.parent.mkdir(parents=True, exist_ok=True)
|
|
773
775
|
dest.write_text(json.dumps(_json_safe(payload), indent=2, sort_keys=True, ensure_ascii=False)+"\n", encoding="utf-8")
|
|
774
776
|
records.append({"source": rel.as_posix()[:-8], "ir": rel.as_posix(), "source_sha256": payload["source"]["sha256"]})
|
|
775
|
-
manifest = {"schema_version":"frontmattering_ir_batch_manifest/v0_3","distribution_version":"0.4.
|
|
777
|
+
manifest = {"schema_version":"frontmattering_ir_batch_manifest/v0_3","distribution_version":"0.4.4","source_root":str(path),"document_count":len(records),"records":records,"selection":selection.payload(),"claim_boundary":"Disposable deterministic projection; source Markdown remains authoritative."}
|
|
776
778
|
(out_root/"manifest.json").write_text(json.dumps(manifest,indent=2,sort_keys=True)+"\n",encoding="utf-8")
|
|
777
779
|
print(f"document_ir_batch_written={out_root} documents={len(records)}")
|
|
778
780
|
return terminal
|
|
@@ -936,13 +938,20 @@ def validate(targets: list[str]) -> dict[str, Any]:
|
|
|
936
938
|
}
|
|
937
939
|
|
|
938
940
|
|
|
941
|
+
USAGE = "usage: frontmattering-runtime validate <path> [<path> ...] [--format json]"
|
|
942
|
+
|
|
943
|
+
|
|
939
944
|
def _parse_args(argv: list[str]) -> tuple[str, list[str], str]:
|
|
945
|
+
if len(argv) >= 2 and argv[1] in ("-h", "--help"):
|
|
946
|
+
return "help", [], "json"
|
|
940
947
|
if len(argv) < 2 or argv[1] != "validate":
|
|
941
948
|
return "usage", [], "json"
|
|
942
949
|
paths: list[str] = []
|
|
943
950
|
fmt = "json"
|
|
944
951
|
i = 2
|
|
945
952
|
while i < len(argv):
|
|
953
|
+
if argv[i] in ("-h", "--help"):
|
|
954
|
+
return "help", [], fmt
|
|
946
955
|
if argv[i] == "--format":
|
|
947
956
|
if i + 1 >= len(argv) or argv[i + 1] not in {"json"}:
|
|
948
957
|
return "bad_format", [], fmt
|
|
@@ -951,14 +960,24 @@ def _parse_args(argv: list[str]) -> tuple[str, list[str], str]:
|
|
|
951
960
|
else:
|
|
952
961
|
paths.append(argv[i])
|
|
953
962
|
i += 1
|
|
963
|
+
if not paths:
|
|
964
|
+
return "no_paths", [], fmt
|
|
954
965
|
return "validate", paths, fmt
|
|
955
966
|
|
|
956
967
|
|
|
957
968
|
def main(argv: list[str] | None = None) -> int:
|
|
958
969
|
argv = list(sys.argv if argv is None else argv)
|
|
959
970
|
action, paths, _fmt = _parse_args(argv)
|
|
971
|
+
if action == "help":
|
|
972
|
+
print(USAGE)
|
|
973
|
+
print("\nValidate-only runtime surface. Requires at least one path (file or directory).", file=sys.stdout)
|
|
974
|
+
return 0
|
|
960
975
|
if action == "usage":
|
|
961
|
-
print(
|
|
976
|
+
print(USAGE, file=sys.stderr)
|
|
977
|
+
return 2
|
|
978
|
+
if action == "no_paths":
|
|
979
|
+
print(USAGE, file=sys.stderr)
|
|
980
|
+
print("error: validate requires at least one path", file=sys.stderr)
|
|
962
981
|
return 2
|
|
963
982
|
if action == "bad_format":
|
|
964
983
|
print("frontmattering-runtime only supports --format json", file=sys.stderr)
|
|
@@ -1019,7 +1038,7 @@ def _runtime_wrapper() -> str:
|
|
|
1019
1038
|
"runtime_builder": "frontmattering.__main__.command_runtime_pack",
|
|
1020
1039
|
}
|
|
1021
1040
|
return RUNTIME_WRAPPER_TEMPLATE.replace(
|
|
1022
|
-
"__KERNEL_VERSION__", "0.4.
|
|
1041
|
+
"__KERNEL_VERSION__", "0.4.4"
|
|
1023
1042
|
).replace(
|
|
1024
1043
|
"__RUNTIME_BUILD_MANIFEST__", json.dumps(manifest, sort_keys=True)
|
|
1025
1044
|
)
|
|
@@ -1066,7 +1085,7 @@ def command_runtime_pack(args: argparse.Namespace) -> int:
|
|
|
1066
1085
|
"schema_version": "frontmattering_runtime_pack_report/v0_2",
|
|
1067
1086
|
"runtime_artifact": str(out),
|
|
1068
1087
|
"canonical_model_version": "0.1.5",
|
|
1069
|
-
"kernel_version": "0.4.
|
|
1088
|
+
"kernel_version": "0.4.4",
|
|
1070
1089
|
"artifact_format": "python_zipapp",
|
|
1071
1090
|
"surface": "validate_only",
|
|
1072
1091
|
"artifact_sha256": hashlib.sha256(artifact_bytes).hexdigest(),
|
|
@@ -1104,7 +1123,7 @@ def build_parser() -> argparse.ArgumentParser:
|
|
|
1104
1123
|
prog="frontmattering",
|
|
1105
1124
|
description="Govern and orient load-bearing Markdown with Frontmattering canonical model v0.1.5 frontmatter.",
|
|
1106
1125
|
)
|
|
1107
|
-
parser.add_argument("--version", action="version", version="frontmattering distribution v0.4.
|
|
1126
|
+
parser.add_argument("--version", action="version", version="frontmattering distribution v0.4.4; canonical model v0.1.5")
|
|
1108
1127
|
sub = parser.add_subparsers(dest="command", required=True, parser_class=StrictArgumentParser)
|
|
1109
1128
|
|
|
1110
1129
|
init = sub.add_parser("init", help="Initialize a small Frontmattering document set and package router.")
|
|
@@ -9,7 +9,7 @@ from typing import Any
|
|
|
9
9
|
|
|
10
10
|
import yaml
|
|
11
11
|
|
|
12
|
-
from .authoring import load_project, refresh_router_task_catalog, starter_frontmatter, _remove_generated_starter_router
|
|
12
|
+
from .authoring import load_project, refresh_router_task_catalog, starter_frontmatter, _remove_generated_starter_router, _project_paths, _project_root
|
|
13
13
|
from .harness_errors import ToolingError
|
|
14
14
|
from .markdown.api import parse_markdown_text
|
|
15
15
|
|
|
@@ -158,13 +158,37 @@ def promote_document(
|
|
|
158
158
|
"Choose another --output path or use --in-place intentionally.",
|
|
159
159
|
error_id="FRONTMATTERING-PROMOTE-OUTPUT-EXISTS",
|
|
160
160
|
)
|
|
161
|
+
in_place = destination.resolve() == input_path.resolve()
|
|
162
|
+
project = load_project(destination.parent)
|
|
163
|
+
# Preflight (fail-closed, before any mutation): an in-place promotion must
|
|
164
|
+
# target a file the project actually governs. Otherwise the catalog refresh
|
|
165
|
+
# below cannot see the promoted document and fails *after* rewriting the
|
|
166
|
+
# file — the non-transactional trap. Fail here, before touching the file.
|
|
167
|
+
if in_place and destination.resolve() not in set(_project_paths(project)):
|
|
168
|
+
raise ToolingError(
|
|
169
|
+
"Promotion target is outside the selected corpus",
|
|
170
|
+
str(destination),
|
|
171
|
+
"The project's corpus selection does not include this file, so promoting it in place would rewrite a file the project will not govern and cannot refresh.",
|
|
172
|
+
"Initialize the project at the repository root (`frontmattering init .`) or add this file's directory to the corpus include globs in .frontmattering/project.yaml.",
|
|
173
|
+
{"project_root": str(_project_root(project)), "corpus_include": (project.get("_selection") or {}).get("include") or []},
|
|
174
|
+
error_id="FRONTMATTERING-AUTHORING-TARGET-OUTSIDE-CORPUS",
|
|
175
|
+
)
|
|
176
|
+
original_bytes = destination.read_bytes() if in_place else None
|
|
161
177
|
_atomic_write(destination, output)
|
|
162
178
|
receipt["terminal_state"] = "WRITTEN"
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
179
|
+
committed = False
|
|
180
|
+
try:
|
|
181
|
+
project = load_project(destination.parent)
|
|
182
|
+
if profile == "router":
|
|
183
|
+
removed = _remove_generated_starter_router(project, replacement_path=destination)
|
|
184
|
+
receipt["removed_starter_router_paths"] = [str(path) for path in removed]
|
|
185
|
+
refresh_router_task_catalog(load_project(destination.parent))
|
|
186
|
+
else:
|
|
187
|
+
refresh_router_task_catalog(project)
|
|
188
|
+
committed = True
|
|
189
|
+
finally:
|
|
190
|
+
# Transactional guarantee: any post-write failure must not leave the
|
|
191
|
+
# in-place target mutated. On success this is a no-op.
|
|
192
|
+
if not committed and in_place and original_bytes is not None:
|
|
193
|
+
_atomic_write(destination, original_bytes)
|
|
170
194
|
return receipt
|