본문으로 건너뛰기

Human authority gate coverage audit

Audit date: 2026-08-11

Measurement

The reproducible probe is Report_Doc/scripts/audit-human-authority-coverage.cjs. It inventories the Markdown authorities read by the thirteen contract checkers, plus supporting Plan paths that a profile declares but currently checks only for existence. It divides Markdown into structural blocks: one heading, paragraph, list, table or fenced block. For each block it writes a temporary copy with that block deleted and runs every checker that consumes that authority through an explicit path override. A block is counted as protected only when at least one checker rejects its deletion.

The unit is a Markdown structural block rather than lines or bytes. Prose wrapping therefore does not change the denominator, and a long table is not made to look more protected merely because it has more rows or wider text. The percentage is deliberately named a deletion-mutation score: it proves that the gate notices removal of the block, not that every assertion inside a rejected block is compared. A count-only list can score as deletion-protected while still allowing a rule to be inverted. The mechanism audit below therefore remains necessary.

Run:

bash
node Report_Doc/scripts/audit-human-authority-coverage.cjs > /tmp/human-authority-coverage.json
jq -r '.report[] | [.path, .protectedBlocks, .totalBlocks, .deletionMutationScore, .mechanism] | @tsv' /tmp/human-authority-coverage.json

The exact unprotected parts are reproducible as (kind, line) records in each row's unprotectedBlocks array. “Unprotected” below means the complete structural block can be deleted without making any consuming checker red. Content inside a protected block can still be unpinned unless the mechanism column says its values or load-bearing rule anchors are compared.

Mechanism abbreviations:

  • S — structured value parity: an ordered enum/list, table, JSON/code example, lifecycle, field set or value is compared with the machine profile or accepted fixture.
  • A — a whitespace-normalized load-bearing rule anchor is required. The anchor carries a semantic prohibition, boundary or exact value; ordinary narrative wording remains editable.
  • P — presence/signature scan. It proves that a named item exists, not that its surrounding explanation is authoritative.
  • E — declared path existence only; no content is read.

Coverage table

Human authorityProtected / blocksScoreCurrent mechanism and unpinned boundary
Report_Doc/docs/specification/sdk-grammar.md6 / 2062.9%P for the 35 exact signatures, codec marker and two connection signatures. Examples and explanation are intentionally not wording-pinned; repository-wide SDK syntax scans are separate from this authority score.
Report_Doc/docs/specification/serialization-and-files.md31 / 12425.0%S/A for .pxflow direct schema, package envelope, safe reader, closure, signatures and adapter envelope citations. Other format examples and narrative are outside those gates.
Report_Doc/docs/specification/identity-and-references.md52 / 8958.4%S for key/ref/remap/digest tables and examples; A for rename, copy/import and invariant rules. Remaining walkthrough prose and links are unpinned.
Report_Doc/docs/specification/types-units-diagnostics.md13 / 5026.0%S for bounds, UCUM subset, numeric rules, types, diagnostic envelope/codes/params and surface mapping. Explanatory examples outside parsed blocks are unpinned.
Report_Doc/docs/specification/execution-and-results.md28 / 10227.5%S for states, transitions, objects, validation, Batch/cache/result forms and command shape; A for retry/lease/reconciliation and all ten implementation invariants. SDK/UI walkthroughs and recovery narrative remain unpinned.
Report_Doc/docs/specification/organization-access-and-policy.md56 / 23823.5%S for custody, principals, membership, roles, AccessGrant, audit and diagnostic registries; A for authorization prohibitions and security boundaries. Most examples, UX and policy explanation are unpinned.
Report_Doc/docs/specification/report-flow-connections.md16 / 8119.8%S for connection/member shapes, source/target unions and cardinality; A for identity, generation and value-ownership rules. UI/run walkthroughs remain unpinned.
Report_Doc/docs/specification/report-output-and-external-delivery.md21 / 5637.5%S for operations, frozen inputs, Page setup, layout, output states, permissions and diagnostics; A for retry and all six implementation invariants. Preview/print/publication narrative outside those blocks is unpinned.
Report_Doc/docs/specification/llm-authoring-contract.md15 / 5228.8%S for stages, budgets, generated-contract consumers, commands and legacy rejection; A for stable-key and authority boundaries. Authoring examples remain unpinned.
Report_Doc/docs/integrations/mcp-and-llm.md30 / 10827.8%S for tool catalog, budgets, endpoints, transactions and diagnostics; A for digest, shared-consumer and forbidden-operation rules. Request/response examples not parsed by the checker remain unpinned.
Report_Doc/docs/specification/engineering-paper-sdk.md23 / 4748.9%S for imports, template/key/artifact/dependency tables and formula tree; A for evaluation and artifact boundaries. Tutorial examples are unpinned.
Report_Doc/docs/component-developers/engineering-paper-extensions.md8 / 2532.0%S for extension/element tables; A for one-Component, editor, signed-package and result-member rules. Package layout examples and guidance remain unpinned.
Report_Doc/docs/specification/publication-and-embed-delivery.md37 / 12030.8%S for intent, source/target, audience, fields, protocol, lifecycle, commands and diagnostics; A for all eighteen conformance rules. Examples and operations narrative remain unpinned.
Report_Doc/docs/specification/template-marketplace-and-organization-library.md10 / 2343.5%S for target, rights and approval tables plus all five invariants. Security/update narrative is unpinned.
Report_Doc/docs/component-developers/adapter-system.md14 / 8516.5%S for categories, formats, envelope, descriptor and discovery flow; A for authority-conflict and category-creation rules. Host/tutorial examples remain unpinned.
pipelineXlab_pxflow/DOC/00 PLAN/09_PROJECT_HOME_PRODUCTION_SERVICE_PLAN.md7 / 1664.2%S/A only for transport/repository adapter names, deployment-profile tuple, composition root and effective-AccessGrant boundary. The rest is supporting product Plan prose.
pipelineXlab_pxflow/DOC/00 PLAN/12_FOUNDATIONAL_CONTRACTS_RUST_NATIVE_CORE_FOUNDATION_LOCK_PLAN.md22 / 2319.5%S/A for identity sections 7.1/7.4/7.5, ownership, binding sections 8.x, workspace baseline and supply-chain section 15. Other foundation decisions are outside these two checkers.
pipelineXlab_pxflow/DOC/00 PLAN/14_V1_SHARING_DISTRIBUTION_FOUNDATION_V2_ACTIVATION_PLAN.md13 / 1359.6%S for approval scope and publication/build/template lifecycle values; A for activation boundaries. Other sharing-plan rationale and staging are unpinned.
pipelineXlab_pxflow/DOC/00 PLAN/15_LOCAL_FIRST_AWS_ADDITIVE_DEPLOYMENT_FOUNDATION_PLAN.md59 / 13743.1%S/A across deployment axes/profiles, adapter layers, data authorities, Cloud seams, transfer/recovery, conformance and release gates. Rationale and staged implementation prose are unpinned.
pipelineXlab_pxflow/DOC/00 PLAN/16_ACCOUNT_LICENSE_ENTITLEMENT_PRODUCT_CAPABILITY_PLAN.md2 / 1321.5%S/A now compare the exact five Project role keys and the Reviewer exclusion with the access profile. All other entitlement rules are outside the access machine profile.
pipelineXlab_pxflow/DOC/00 PLAN/18_USER_DATA_LOCAL_FILE_SAAS_RECENT_LIFECYCLE_DECISION_LOCK.md0 / 560.0%E only. The access profile declares this supporting Plan, but the checker reads none of its content.
pipelineXlab_pxflow/DOC/00 PLAN/23_TYPED_ADAPTER_CATEGORY_FORMAT_AI_CATALOG_DECISION_LOCK.md8 / 7610.5%S/A for descriptor owner objects, search/describe signatures, required fields, registration and category criteria. Other adapter rollout/security prose is unpinned.
pipelineXlab_pxflow/DOC/00 PLAN/24_PXFLOW_APP_BUILDER_DEPLOYMENT_REQUEST_DECISION_LOCK.md2 / 812.5%S/A for App Surface search/describe and semantic selector/prohibited overlap. App deployment/CLI lifecycle is not owned by the adapter profile and remains unpinned here.
pipelineXlab_pxflow/DOC/00 PLAN/38_ENGINEERING_PAPER_EXTENSION_PACK_BOUNDARY_DECISION_LOCK.md16 / 5429.6%S for imports, product tree, terms, recovery and stop-ship rules; A for Component/result/formula boundaries. Rationale and sequencing remain unpinned.
pipelineXlab_pxflow/DOC/00 PLAN/40_REPORT_WORKBENCH_PXFLOW_PUBLIC_PORT_CONNECTION_DECISION_LOCK.md4 / 914.4%S now compares both three-member source/target unions; A pins the RFC-004 runtime-ownership boundary. Other Plan 40 duplicate connection values remain a follow-up risk.
pipelineXlab_pxflow/DOC/00 PLAN/44_REPORT_LIBRARY_PAGE_TEMPLATE_HEADER_FOOTER_PRODUCTION_PLAN.md3 / 339.1%S for production root members; A for “not current storage” and selectable-not-constant 15 mm. Remaining template/field production targets are explicitly unapproved.
pipelineXlab_pxflow/DOC/00 PLAN/42_UNIFIED_PYTHON_SDK_REPORT_AUTHORING_AND_MULTI_FLOW_EXECUTION_DECISION_LOCK.md1 / 1510.7%A only for current Plan 42 authoring ownership. Exact public grammar is owned and checked in sdk-grammar.md; Plan implementation examples are not a second grammar authority.
pipelineXlab_pxflow/DOC/00 PLAN/decisions/RFC-002_IDENTITY_REVISION_DAG_LINEAGE_AND_DIGEST_PREIMAGE.md1 / 303.3%A for the shared params canonicalization rule used by RFC-003. Other accepted identity decisions are checked against their primary identity authority, not this citation.
pipelineXlab_pxflow/DOC/00 PLAN/decisions/RFC-012_DEPLOYMENT_PROFILES_PROVIDER_NEUTRAL_ADAPTERS_RESIDENCY_QUOTA_AND_CONFORMANCE.md8 / 3522.9%S/A for derived capability tuple, blockers, performance/scaling and acceptance boundaries. Evidence narrative remains unpinned.

Aggregate deletion-mutation score after the changes: 506 / 2,814 blocks (18.0%). This low number is not itself a defect. These files contain tutorials, rationale, examples, staging and links that should remain editable. It is a useful warning against describing an entire document as “pinned” when only a handful of its value-bearing blocks are compared.

Ranked value-bearing gaps

The highest-cost shared values found in content that previously had only count or existence coverage were:

  1. Authorization — closed. Plan 16 repeated the five Project role keys owner/admin/editor/commenter/viewer and the rule that Reviewer is not a Project role. The access checker previously verified only that the Plan path existed. It now compares the ordered tuple with roles.project.keys and requires the load-bearing Reviewer exclusion.
  2. Report connection address unions — closed. Plan 40 repeated the three source kinds and three target kinds owned by report-output-profile.v1.json. The checker previously read only one Plan 40 boundary sentence. It now compares both ordered unions with the profile.
  3. Runtime invariants — closed. Ten rules could previously be inverted while the checker saw only that ten numbered items remained. Each whitespace-normalized item now has a positional, load-bearing rule anchor; the corresponding machine values are already checked in the same checker.
  4. Publication conformance — closed. Eighteen security, immutability, expiry, retention and revision-retirement rules were protected only by count. Each item now has a normalized positional rule anchor.
  5. Report output invariants — closed. Six exact-revision, immutable-result, explicit-export, non-mutation, separate-operation and artifact-separation rules were protected only by count. Each now has a normalized positional rule anchor.

Remaining ranked risk:

  1. Plan 18 is declared as an access-policy supporting Plan but has existence-only coverage. Its Local/SaaS Recent, file-path privacy, explicit copy/import and deletion rules do not have a corresponding access-profile value set. This is a rule-with-no-machine-counterpart gap, not a value disagreement, so this audit records it rather than inventing a second profile contract.
  2. Plan 42, Plan 24, Plan 09 and Plan 40 have very low deletion scores. Their unchecked portions are mostly owner rationale, product staging or contracts owned by another profile. A future checker should add parity only when one of those blocks intentionally becomes a second source of a machine value; pinning the prose wholesale would be harmful.
  3. SDK grammar has the lowest primary-spec score because its exact signatures are presence-pinned while its many tutorial blocks remain editable. No additional wording pin is recommended; a future audit should prefer typed extraction of examples that claim exact defaults or enums.

Red/green demonstrations

Every closed gap has a fail-closed temporary-file mutation in the relevant mutation suite:

MutationRequired red diagnostic
Plan 16 changes commenter to reviewerEntitlement Plan Project role tuple does not match roles.project.keys
Plan 16 promotes Reviewer to a Project roleEntitlement Plan Reviewer is not a Project role
Plan 40 changes reportAttachment to reportFilePlan 40 source and target closed unions do not match the machine profile
Runtime invariant 3 allows ResultSnapshot mutationimplementation invariant 3 no longer states its approved runtime rule
Publication conformance case 3 follows mutable current headconformance case 3 no longer states its approved rule
Report output invariant 4 permits source mutationimplementation invariant 4 no longer states its approved output rule

The suites create contradictory temporary authorities, observe a non-zero checker exit with the listed diagnostic, remove the temporary files, and then run the unchanged authority green. The real outputs captured for this audit were:

text
Access policy contract mutation tests passed (47 fail-closed cases).
Runtime lifecycle contract mutation tests passed (42 fail-closed cases).
Publication and sharing activation contract mutation tests passed (48 fail-closed cases).
Report output contract mutation tests passed (54 fail-closed cases).

The unchanged checkers then reported their normal contract-check pass messages.

Findings and blockers

  • No existing human/profile disagreement was found in the shared values compared or newly closed above. Plan 16's role tuple and Reviewer rule, Plan 40's unions, and all three numbered rule sets agree with the current profiles.
  • No authority omitted a value that this task needed to choose, so no product-owner blocker was created and no evidence/owner-decision index changed.
  • Plan 18's existence-only status is the main recorded follow-up. This audit does not promote its rules into the access profile because that would choose a new machine boundary rather than check an existing duplicate value.
  • Narrative, rationale, links and illustrative examples are intentionally unpinned unless they claim an exact machine value. Their presence in unprotectedBlocks is not a request to add a digest or wording-sensitive gate.