@research-engineering/agentic-proofkit 0.4.0 → 0.5.0
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.
- package/dist/platform/darwin-arm64/agentic-proofkit +0 -0
- package/dist/platform/darwin-x64/agentic-proofkit +0 -0
- package/dist/platform/linux-arm64/agentic-proofkit +0 -0
- package/dist/platform/linux-x64/agentic-proofkit +0 -0
- package/docs/proofkit-contract-map.md +2 -0
- package/docs/specs/proofkit-agent-workflow/overview.md +86 -0
- package/docs/specs/proofkit-agent-workflow/requirements.v1.json +157 -0
- package/docs/specs/proofkit-spec-proof-core/overview.md +7 -3
- package/docs/specs/proofkit-spec-proof-core/requirements.v1.json +2 -2
- package/docs/specs/proofkit-supply-chain-quality/overview.md +22 -4
- package/docs/specs/proofkit-supply-chain-quality/requirements.v1.json +27 -1
- package/package.json +2 -2
- package/proofkit/cli-contract.v2.json +463 -18
- package/proofkit/command-families.v1.json +9 -0
- package/proofkit/requirement-bindings.json +768 -0
- package/proofkit/witness-plan.json +3 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -39,6 +39,7 @@ owner boundaries. It is not a second command-family inventory.
|
|
|
39
39
|
|
|
40
40
|
| Family | Main commands | Caller provides | Proofkit owns | Consumer owns | Output authority |
|
|
41
41
|
|---|---|---|---|---|---|
|
|
42
|
+
| Agent workflow planning | `change-workflow-plan`, `native-evidence-guidance` | explicit checkpoint, completed stage ids, bounded context refs, governing authority ref, and required context ref ids | optional built-in `proofkit.reviewed-change.v1` checkpoint relation, reference-closed next-stage context, deterministic agent prompts, bounded text/JSON/envelope projections, and repository-neutral native-evidence guidance with closed applicability classes | custom workflow topology, repository state discovery, stage execution, native witness semantics, evidence collection, review conclusions, merge, release, deployment, and rollout authority | next-action plan, terminal workflow report, bounded agent envelope, or guidance catalog |
|
|
42
43
|
| Adoption and scaffolding | `init`, `adoption-contract-envelope`, `adoption-workflow-plan`, `adoption-checklist`, `adoption-doctor`, `gradual-adoption`, `gradual-adoption-bootstrap`, `gradual-adoption-guidance`, `capability-map-admission`, `pilot-admission`, `scaffold-profile-plan`, `scaffold-project-structure`, `stack-preset` | adoption intent, aggregate adoption contract envelope, checklist facts, target paths, owner routes, caller-extracted stale authority vocabulary facts, explicit pre-spec capability observations, pilot records, stack preset id, optional init preset id | dry-run route selection, aggregate contract-envelope admission, deterministic starter plans, checklist/report admission, bounded guidance envelopes, dry-run manifests, pre-spec trust-mode admission, adoption gap and stale-authority classification, pilot shape admission | final files, final requirements, rollout policy, text extraction from files, code observation extraction, pilot truth | selected child output, plan, report, seed packet, or agent envelope |
|
|
43
44
|
| Requirement source | `capability-map-admission`, `requirement-authoring-plan`, `requirement-source-admission`, `requirement-source-transition`, `spec-overview-claims`, `requirement-spec-tree`, `requirement-spec-tree-view`, `requirement-source-view`, `requirement-browser-server` | `requirements.v1.json`, caller-owned capability maps, caller-owned authoring facts, overview claim extraction, explicit spec hierarchy, view options | candidate seed admission, candidate-only authoring packets, source-shape admission, lifecycle checks, explicit tree topology/source-ref admission, shared safe renderer fragments, presentation-only views | requirement meaning, extraction completeness, Markdown extraction completeness, hierarchy ownership, proof adequacy, file materialization | capability map report, authoring packet, source report, spec-tree report, rendered view, or browser presentation |
|
|
44
45
|
| Requirement proof binding | `requirement-bindings`, `binding-partition`, `proof-slice`, `evidence-graph`, `requirement-proof-resolver`, `requirement-proof-source-set`, `requirement-proof-view`, `spec-proof-bundle-admission` | requirement records, bindings, witness commands, source-set facts, receipt reports, partition policy | graph validation, binding partition projection, compact slices, declaration-only compact route projection with full binding identity and role-qualified witness routes, resolver projection, bundle linkage checks | selector resolution, oracle quality, witness execution, mutation adequacy, finding completeness, proof freshness, trust, assurance, merge policy | proof report, partition report, slice, declaration lookup graph, or view |
|
|
@@ -122,6 +123,7 @@ Semantic context routes are `requirement-context-compose`,
|
|
|
122
123
|
| State or goal | Next Proofkit route | Stop or escalation condition |
|
|
123
124
|
|---|---|---|
|
|
124
125
|
| The agent does not know where to start. | `init`, or `init --preset` with `fresh`, `code-baseline`, `code-audit`, `legacy`, or `change-set` | Treat output as dry-run route guidance only. Stop before scanning, writing files, or making requirements authoritative. |
|
|
126
|
+
| An agent needs a bounded, deterministic stage transition for an engineering change. | `change-workflow-plan` selects the optional built-in `proofkit.reviewed-change.v1` profile; use `--agent-envelope` for the compact work packet and `native-evidence-guidance` when the consuming repository has not yet materialized repository-specific evidence instructions. | Supply only explicit current checkpoint, completed stages, and admitted context references. Apply conditional guidance slots only when their applicability class matches a declared consumer mechanism. Stop before treating the profile, plan, or guidance as repository policy or as proof that a stage ran, evidence exists, review passed, or merge/release is authorized. |
|
|
125
127
|
| No admitted spec/profile exists and the caller has explicit capability observations. | `capability-map-admission`; use `trustMode: "code_baseline"` only when maintainers intentionally freeze current code, otherwise use `trustMode: "audit_from_code"`. | Stop before treating seeds as stable requirements. The consumer owns observation extraction, materialization, requirement meaning, and proof adequacy. |
|
|
126
128
|
| No admitted spec/profile exists and no capability observations exist. | `scaffold-project-structure`, `adoption-workflow-plan`, or `stack-preset` | Stop before writing files; the consumer owns materialization, overwrite policy, and final requirement text. |
|
|
127
129
|
| Candidate boundary is uncertain. | `adoption-doctor` or `gradual-adoption-guidance --agent-envelope` | Escalate to owner review when the boundary is advisory, ambiguous, or missing native witnesses. |
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Proofkit Agent Workflow Spec
|
|
2
|
+
|
|
3
|
+
This spec owns Proofkit's generic support for planning one engineering-change
|
|
4
|
+
snapshot and for teaching a consuming repository to define executable native
|
|
5
|
+
evidence. It does not own consumer product meaning, repository policy,
|
|
6
|
+
witnesses, merge, release, rollout, or production-readiness decisions.
|
|
7
|
+
|
|
8
|
+
The public capability is deliberately small:
|
|
9
|
+
|
|
10
|
+
1. `change-workflow-plan` admits explicit JSON and projects one next action for
|
|
11
|
+
the optional built-in profile `proofkit.reviewed-change.v1`, whose ordered
|
|
12
|
+
stages are `architecture`, `design`, `implementation_plan`,
|
|
13
|
+
`implementation`, `verification`, `pull_request`, and `closeout`.
|
|
14
|
+
2. `native-evidence-guidance` exposes one versioned 22-slot template for
|
|
15
|
+
repository-owned falsifiers, oracles, bounds, lifecycle, and non-claims.
|
|
16
|
+
Every slot names one closed applicability class: `always`,
|
|
17
|
+
`declared_input_channels`, `environment_or_network_access`,
|
|
18
|
+
`external_process`, or `mutable_artifacts`. The latter four apply only when
|
|
19
|
+
the consuming witness declares the named mechanism.
|
|
20
|
+
3. Existing descriptors, dispatch, command families, root-shape CLI contracts,
|
|
21
|
+
agent envelopes, and package gates provide public-surface closure.
|
|
22
|
+
|
|
23
|
+
Neither command scans a repository. Both command cores are stateless pure
|
|
24
|
+
projections with no filesystem, Git, process, environment, clock, random,
|
|
25
|
+
network, container, or provider dependency. No setup facade, agent-route extension,
|
|
26
|
+
external prompt resource, persisted experiment state, or second source codec is
|
|
27
|
+
introduced.
|
|
28
|
+
|
|
29
|
+
## Requirements
|
|
30
|
+
|
|
31
|
+
- `REQ-PROOFKIT-WORKFLOW-001`: one-time typed admission, pure deterministic
|
|
32
|
+
projection, and derived-output authority boundary.
|
|
33
|
+
- `REQ-PROOFKIT-WORKFLOW-002`: named optional built-in profile, exact
|
|
34
|
+
seven-stage order, prefix/checkpoint biconditional, and a disjoint terminal
|
|
35
|
+
output.
|
|
36
|
+
- `REQ-PROOFKIT-WORKFLOW-003`: 28 active state rows, one terminal row,
|
|
37
|
+
authority- and witness-gated executable envelope transitions, closed
|
|
38
|
+
blockers and clarifications when those preconditions are absent, exact
|
|
39
|
+
accepted-subject carry into each nonterminal successor, and an explicit
|
|
40
|
+
terminal stop packet.
|
|
41
|
+
- `REQ-PROOFKIT-WORKFLOW-004`: typed subject/finding resolution, incoming
|
|
42
|
+
subject identity on every noninitial stage, and internally consistent
|
|
43
|
+
caller-declared digests.
|
|
44
|
+
- `REQ-PROOFKIT-WORKFLOW-005`: shared 256-byte stable-ID admission before work,
|
|
45
|
+
global candidate-dependency resolution, one explicit nullable
|
|
46
|
+
governing-authority reference, role-preserving bounded least dependency
|
|
47
|
+
closure over explicit seeds, exact omission accounting, and output-byte
|
|
48
|
+
limits.
|
|
49
|
+
- `REQ-PROOFKIT-WORKFLOW-006`: only existing launcher and presentation
|
|
50
|
+
capabilities outside explicit input, with no ambient repository authority,
|
|
51
|
+
setup facade, hidden policy, or agent-route extension.
|
|
52
|
+
- `REQ-PROOFKIT-WORKFLOW-007`: pure deterministic repository-neutral
|
|
53
|
+
native-evidence guidance from one versioned typed table with five closed
|
|
54
|
+
applicability classes, explicit absent-channel decisions, and finite
|
|
55
|
+
nondisclosure corpora.
|
|
56
|
+
- `REQ-PROOFKIT-WORKFLOW-008`: display-safe caller admission, no-leak denial,
|
|
57
|
+
exact retained-or-missing witness projection, bounded actionable and
|
|
58
|
+
terminal text with required coordinates and exact rendered successor delta,
|
|
59
|
+
and no styling of caller values.
|
|
60
|
+
- `REQ-PROOFKIT-WORKFLOW-009`: explicit text/color selection and confinement of
|
|
61
|
+
ANSI to eligible terminal stdout.
|
|
62
|
+
- `REQ-PROOFKIT-WORKFLOW-010`: one production catalog owner for stage,
|
|
63
|
+
checkpoint-schema, action-prerequisite, and successor semantics,
|
|
64
|
+
independently authored semantic and literal-duplication oracles, and an
|
|
65
|
+
AST-checked two-command carrier topology with no runtime experiment or
|
|
66
|
+
external template residue.
|
|
67
|
+
- `REQ-PROOFKIT-WORKFLOW-011`: a finite factorized CLI relation closed across
|
|
68
|
+
descriptor/dispatcher/family/help/root-contract/witness/generated/package
|
|
69
|
+
surfaces, with npm-only non-runtime specification docs and cross-channel
|
|
70
|
+
runtime behavior proof.
|
|
71
|
+
|
|
72
|
+
Shared stable-JSON/diagnostic hardening is owned by the supply-chain-quality
|
|
73
|
+
spec. Typed local-reference closure is owned by the existing agent-envelope
|
|
74
|
+
requirement. This workflow spec consumes those owners without duplicating them.
|
|
75
|
+
|
|
76
|
+
## Non-Claims
|
|
77
|
+
|
|
78
|
+
- Generated prompts are not authenticated and need not be obeyed or adequate.
|
|
79
|
+
- The built-in reviewed-change profile is optional guidance, not universal
|
|
80
|
+
consuming-repository process policy or a custom workflow-graph engine.
|
|
81
|
+
- Static prompt bytes do not prove provider token use or model reasoning.
|
|
82
|
+
- Least dependency closure does not prove context truth, freshness, semantic
|
|
83
|
+
sufficiency, or global minimality.
|
|
84
|
+
- A finite pilot does not prove universal repository fit.
|
|
85
|
+
- This spec does not select a persisted requirement-source codec.
|
|
86
|
+
- This spec does not approve merge, release, rollout, or production readiness.
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"sourceId": "proofkit.agent-workflow.requirements",
|
|
4
|
+
"specPackagePath": "docs/specs/proofkit-agent-workflow",
|
|
5
|
+
"overviewPath": "docs/specs/proofkit-agent-workflow/overview.md",
|
|
6
|
+
"requirementsPath": "docs/specs/proofkit-agent-workflow/requirements.v1.json",
|
|
7
|
+
"requirements": [
|
|
8
|
+
{
|
|
9
|
+
"requirementId": "REQ-PROOFKIT-WORKFLOW-001",
|
|
10
|
+
"ownerId": "proofkit.agent-workflow",
|
|
11
|
+
"invariant": "Change-workflow planning admits one explicit caller snapshot into an immutable typed projection, decides only from that projection, and deterministically returns one derived non-authoritative plan without executing or supervising agents, witnesses, repository operations, providers, CI, merge, release, rollout, or deployment; no prompt, report, envelope, view, test, or generated record becomes a second semantic owner.",
|
|
12
|
+
"claimLevel": "blocking",
|
|
13
|
+
"riskClass": "high",
|
|
14
|
+
"proofBindingRefs": ["proofkit/requirement-bindings.json"],
|
|
15
|
+
"nonClaimRefs": ["NC-PROOFKIT-WORKFLOW-001"],
|
|
16
|
+
"nonClaims": ["The planner does not authenticate caller assertions or prove that a planned action was executed, correct, reviewed, or completed."],
|
|
17
|
+
"lifecycle": {"state": "active", "replacementRequirementIds": [], "evidenceRefs": []},
|
|
18
|
+
"deferral": null,
|
|
19
|
+
"updatePolicy": {"reviewOwnerId": "proofkit.agent-workflow", "requiresImpactDeclaration": true, "requiresProofBindingReview": true}
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"requirementId": "REQ-PROOFKIT-WORKFLOW-002",
|
|
23
|
+
"ownerId": "proofkit.agent-workflow",
|
|
24
|
+
"invariant": "The optional built-in workflow profile proofkit.reviewed-change.v1 owns exactly the ordered stages architecture, design, implementation_plan, implementation, verification, pull_request, and closeout; every non-envelope plan names that profile, completedStageIds is exactly one prefix of that order, every incomplete prefix has a non-null checkpoint and an active stage equal to the first stage outside the prefix, and the complete prefix has a null checkpoint if and only if the output is the disjoint workflow_complete variant with no active-stage, action, checkpoint-state, or prompt field.",
|
|
25
|
+
"claimLevel": "blocking",
|
|
26
|
+
"riskClass": "high",
|
|
27
|
+
"proofBindingRefs": ["proofkit/requirement-bindings.json"],
|
|
28
|
+
"nonClaimRefs": ["NC-PROOFKIT-WORKFLOW-002"],
|
|
29
|
+
"nonClaims": ["Stage ordering does not prove the semantic adequacy of any architecture, design, plan, implementation, verification, pull request, or closeout artifact."],
|
|
30
|
+
"lifecycle": {"state": "active", "replacementRequirementIds": [], "evidenceRefs": []},
|
|
31
|
+
"deferral": null,
|
|
32
|
+
"updatePolicy": {"reviewOwnerId": "proofkit.agent-workflow", "requiresImpactDeclaration": true, "requiresProofBindingReview": true}
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"requirementId": "REQ-PROOFKIT-WORKFLOW-003",
|
|
36
|
+
"ownerId": "proofkit.agent-workflow",
|
|
37
|
+
"invariant": "The active checkpoint is exactly one closed discriminated variant not_started, ready_for_review, review_findings, or review_passed; one independently enumerable total non-overlapping relation maps the 28 active stage/checkpoint rows to exactly one stage-specific first action, review, repair, or accept_stage, the twenty-ninth complete-prefix row maps only to workflow_complete, an active agent envelope emits its single next_action only when a governing authority ref is retained and the verify action additionally retains at least one caller-owned witness ref, otherwise it emits no executable action plus closed blockers and clarification questions, every accept_stage plan and emitted envelope action declares exactly one equal successorStateDelta containing only completedStageIds and checkpoint, a nonterminal delta carries the accepted subjectRefId and subjectDigest into the next stage's not_started checkpoint while the terminal delta has a null checkpoint, applying that delta by replacing only those two input fields while preserving schemaVersion, governingAuthorityRefId, contextRefs, and requiredContextRefIds produces exactly one legal successor snapshot, the terminal envelope names workflow_complete and an explicit stop action without a successor delta, and every surplus, missing, or otherwise illegal field combination fails closed.",
|
|
38
|
+
"claimLevel": "blocking",
|
|
39
|
+
"riskClass": "high",
|
|
40
|
+
"proofBindingRefs": ["proofkit/requirement-bindings.json"],
|
|
41
|
+
"nonClaimRefs": ["NC-PROOFKIT-WORKFLOW-003"],
|
|
42
|
+
"nonClaims": ["The snapshot relation does not own pending work, elapsed time, predecessor history, waiver, abort, reopen, or external task-state transitions."],
|
|
43
|
+
"lifecycle": {"state": "active", "replacementRequirementIds": [], "evidenceRefs": []},
|
|
44
|
+
"deferral": null,
|
|
45
|
+
"updatePolicy": {"reviewOwnerId": "proofkit.agent-workflow", "requiresImpactDeclaration": true, "requiresProofBindingReview": true}
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"requirementId": "REQ-PROOFKIT-WORKFLOW-004",
|
|
49
|
+
"ownerId": "proofkit.agent-workflow",
|
|
50
|
+
"invariant": "Every noninitial not_started, ready_for_review, review_findings, and review_passed checkpoint binds the caller-declared stage artifact through one subjectRefId that resolves exactly one artifact context reference and one equal lowercase SHA-256 subject digest; the initial architecture/not_started checkpoint alone has no incoming subject, assessed variants require an equal assessmentSubjectDigest, review_findings resolves each findingRef exactly once to a finding context reference, and a malformed, absent, surplus, unresolved, wrong-kind, or mismatched identity fails before an action is projected.",
|
|
51
|
+
"claimLevel": "blocking",
|
|
52
|
+
"riskClass": "high",
|
|
53
|
+
"proofBindingRefs": ["proofkit/requirement-bindings.json"],
|
|
54
|
+
"nonClaimRefs": ["NC-PROOFKIT-WORKFLOW-004"],
|
|
55
|
+
"nonClaims": ["Digest equality proves only internal equality of caller-declared identity fields and does not bind actual bytes, authenticate the reviewer, establish currentness or trust, or prove assessment quality."],
|
|
56
|
+
"lifecycle": {"state": "active", "replacementRequirementIds": [], "evidenceRefs": []},
|
|
57
|
+
"deferral": null,
|
|
58
|
+
"updatePolicy": {"reviewOwnerId": "proofkit.agent-workflow", "requiresImpactDeclaration": true, "requiresProofBindingReview": true}
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"requirementId": "REQ-PROOFKIT-WORKFLOW-005",
|
|
62
|
+
"ownerId": "proofkit.agent-workflow",
|
|
63
|
+
"invariant": "The planner admits 0 to 48 strictly refId-sorted unique candidate context references; every candidate ID, nullable governingAuthorityRefId, required seed ID, dependency ID, subject ID, and finding ID is first admitted by the shared stable RuleID owner with a 256 UTF-8 byte maximum before sorting, indexing, closure, or projection; every dependency of every candidate resolves exactly once before seed selection or closure, including dependencies of candidates that the final closure omits; the governingAuthorityRefId when present resolves exactly one authority reference; it admits 0 to 12 required seed IDs, at most 12 finding references, at most 8 dependencies per candidate, at most 384 UTF-8 bytes per artifact path, and at most 18432 aggregate candidate-path bytes; it returns the unique least dependency-closed subset containing the governing authority, required, subject, and finding seeds, fails closed above 24 retained references or 9216 retained-path bytes, derives the exact sorted candidate-minus-retained omission set, summarizes that set once in an envelope, classifies only the selected governing authority as semantic_owner while other authority, artifact, finding, and witness references remain owner_surface, evidence, review_finding, and proof_binding respectively, and fails JSON, envelope, and text outputs above 128 KiB, 128 KiB, and 8192 bytes before partial output.",
|
|
64
|
+
"claimLevel": "blocking",
|
|
65
|
+
"riskClass": "high",
|
|
66
|
+
"proofBindingRefs": ["proofkit/requirement-bindings.json"],
|
|
67
|
+
"nonClaimRefs": ["NC-PROOFKIT-WORKFLOW-005"],
|
|
68
|
+
"nonClaims": ["Structural least closure relative to caller-declared seeds and edges does not prove context truth, freshness, semantic sufficiency, global minimality, or provider token usage."],
|
|
69
|
+
"lifecycle": {"state": "active", "replacementRequirementIds": [], "evidenceRefs": []},
|
|
70
|
+
"deferral": null,
|
|
71
|
+
"updatePolicy": {"reviewOwnerId": "proofkit.agent-workflow", "requiresImpactDeclaration": true, "requiresProofBindingReview": true}
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"requirementId": "REQ-PROOFKIT-WORKFLOW-006",
|
|
75
|
+
"ownerId": "proofkit.agent-workflow",
|
|
76
|
+
"invariant": "After existing bounded CLI transport, immutable installed-launcher profile admission, and immutable presentation-capability capture, the semantic planner accepts no repository root, caller prompt, caller-selected bound, command, environment, receipt body, or external authority field and has no filesystem, Git, process, environment, clock, random, network, container, or provider dependency; the CLI reads only the explicit input transport, the existing launcher-profile and optional Python-executable transport capabilities, and startup TTY/NO_COLOR presence needed by requested presentation, and the capability adds no setup facade, ambient scan, hidden repository policy, consumer-specific route, or agent-route extension.",
|
|
77
|
+
"claimLevel": "blocking",
|
|
78
|
+
"riskClass": "high",
|
|
79
|
+
"proofBindingRefs": ["proofkit/requirement-bindings.json"],
|
|
80
|
+
"nonClaimRefs": ["NC-PROOFKIT-WORKFLOW-006"],
|
|
81
|
+
"nonClaims": ["Explicit caller input does not establish repository identity, policy, source meaning, authorization to mutate, or the truth of observations made outside Proofkit."],
|
|
82
|
+
"lifecycle": {"state": "active", "replacementRequirementIds": [], "evidenceRefs": []},
|
|
83
|
+
"deferral": null,
|
|
84
|
+
"updatePolicy": {"reviewOwnerId": "proofkit.agent-workflow", "requiresImpactDeclaration": true, "requiresProofBindingReview": true}
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"requirementId": "REQ-PROOFKIT-WORKFLOW-007",
|
|
88
|
+
"ownerId": "proofkit.agent-workflow",
|
|
89
|
+
"invariant": "Native-evidence guidance has exactly one versioned repository-neutral semantic owner that emits exactly the declared semantic owner, subject/currentness, execution root/source snapshot, exact argv, stdin/input bytes, toolchain/platform/locale/timezone/dependencies, positive control, independent near-miss falsifier, executable oracle, input/work bounds, environment/network policy, CPU/memory/disk/file-descriptor/PID bounds, output-channel bounds, timeout/process-group/detached-child policy, exit mapping, nondisclosure, cleanup/crash inventory, receipt identity, currentness/trust, escalation, retirement, and non-claim slots; every slot carries exactly one closed applicability class from always, declared_input_channels, environment_or_network_access, external_process, and mutable_artifacts so mechanism-specific decisions are conditional on the corresponding declared consumer mechanism; always-applicable output and receipt slots require each present channel to be bounded and identity-bound while each absent channel is explicitly not_applicable, nondisclosure selects one finite exact corpus and one finite explicitly derived fragment list rather than an unbounded fragment claim; every admitted CLI delivery is deterministically bound to that owner, and JSON and text are derived without input, mutable shared state, filesystem, Git, process, environment, clock, random, network, container, provider, or other ambient dependency.",
|
|
90
|
+
"claimLevel": "blocking",
|
|
91
|
+
"riskClass": "high",
|
|
92
|
+
"proofBindingRefs": ["proofkit/requirement-bindings.json"],
|
|
93
|
+
"nonClaimRefs": ["NC-PROOFKIT-WORKFLOW-007"],
|
|
94
|
+
"nonClaims": ["The template does not generate, execute, approve, authenticate, or prove adequacy of a consuming repository's script, witness, oracle, receipt, policy, or cleanup implementation."],
|
|
95
|
+
"lifecycle": {"state": "active", "replacementRequirementIds": [], "evidenceRefs": []},
|
|
96
|
+
"deferral": null,
|
|
97
|
+
"updatePolicy": {"reviewOwnerId": "proofkit.agent-workflow", "requiresImpactDeclaration": true, "requiresProofBindingReview": true}
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"requirementId": "REQ-PROOFKIT-WORKFLOW-008",
|
|
101
|
+
"ownerId": "proofkit.agent-workflow",
|
|
102
|
+
"invariant": "Every workflow caller-visible value is admitted through its typed owner; display-safe values reject malformed UTF-8, secret-shaped content, ASCII controls, DEL, Unicode Cc, Cf, Zl, and Zp without echo; every active prompt packet projects observed fact, uncertainty, the resolved governingAuthorityRefId or a closed missing-owner escalation target, exact admitted coordinates, candidate action, one closed proof-availability state distinguishing a missing consumer witness from exact retained witness refs, non-claim, stop condition, and expected successor from command-owned tables, and when governingAuthorityRefId is null the packet forbids repository mutation until the caller supplies it; planner text contains the state, active stage and action when present, checkpoint, owner or escalation, stop condition, expected successor, omission count, and one non-claim within 24 lines and 8192 bytes, and an accept_stage projection additionally renders the exact successor completed-stage set, checkpoint state, subject ref, and subject digest while the terminal variant renders explicit consumer owner, stop condition, and no successor; guidance text contains every slot ID, applicability class, required decision, and completion criterion within 48 lines and 16384 bytes; caller-owned values are never terminal-styled.",
|
|
103
|
+
"claimLevel": "blocking",
|
|
104
|
+
"riskClass": "high",
|
|
105
|
+
"proofBindingRefs": ["proofkit/requirement-bindings.json"],
|
|
106
|
+
"nonClaimRefs": ["NC-PROOFKIT-WORKFLOW-008"],
|
|
107
|
+
"nonClaims": ["Bounded nondisclosure admission does not prove absence of every possible sensitive value or every terminal interpretation."],
|
|
108
|
+
"lifecycle": {"state": "active", "replacementRequirementIds": [], "evidenceRefs": []},
|
|
109
|
+
"deferral": null,
|
|
110
|
+
"updatePolicy": {"reviewOwnerId": "proofkit.agent-workflow", "requiresImpactDeclaration": true, "requiresProofBindingReview": true}
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"requirementId": "REQ-PROOFKIT-WORKFLOW-009",
|
|
114
|
+
"ownerId": "proofkit.agent-workflow",
|
|
115
|
+
"invariant": "Workflow commands default to JSON and color never; text and color auto require explicit flags, auto is eligible only for terminal stdout when immutable startup capabilities report a TTY and no NO_COLOR setting, admitted style tokens strip exactly to canonical plain text, and JSON, stderr, redirected stdout, files, prompts, envelopes, reports, receipts, and generated records remain ANSI-free.",
|
|
116
|
+
"claimLevel": "blocking",
|
|
117
|
+
"riskClass": "high",
|
|
118
|
+
"proofBindingRefs": ["proofkit/requirement-bindings.json"],
|
|
119
|
+
"nonClaimRefs": ["NC-PROOFKIT-WORKFLOW-009"],
|
|
120
|
+
"nonClaims": ["Terminal styling is presentation only and does not claim identical rendering across terminal emulators."],
|
|
121
|
+
"lifecycle": {"state": "active", "replacementRequirementIds": [], "evidenceRefs": []},
|
|
122
|
+
"deferral": null,
|
|
123
|
+
"updatePolicy": {"reviewOwnerId": "proofkit.agent-workflow", "requiresImpactDeclaration": true, "requiresProofBindingReview": true}
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"requirementId": "REQ-PROOFKIT-WORKFLOW-010",
|
|
127
|
+
"ownerId": "proofkit.agent-workflow",
|
|
128
|
+
"invariant": "The production capability has exactly one workflow catalog declaration owning stage order, incoming-subject policy, checkpoint field schemas, checkpoint-action relations, action prerequisites, successor-emission policy, and action profiles, and exactly one guidance-table declaration owning evidence slots; descriptor closure exposes exactly one required-input planner carrier and one no-input guidance carrier in one coherent command family, a source-topology oracle rejects duplicate or retired production owners, duplicated catalog vocabulary, and runtime guidance resources, and independent literal state, action-profile, successor, and slot oracles falsify semantic drift without becoming production owners; the capability adds no persisted experiment matrix, candidate receipt, source-codec variant, external prompt duplicate, repository adapter, setup state, or generic agent executor.",
|
|
129
|
+
"claimLevel": "blocking",
|
|
130
|
+
"riskClass": "medium",
|
|
131
|
+
"proofBindingRefs": ["proofkit/requirement-bindings.json"],
|
|
132
|
+
"nonClaimRefs": ["NC-PROOFKIT-WORKFLOW-010"],
|
|
133
|
+
"nonClaims": ["Structural minimality does not prove universal usability, open-world optimality, lower provider token use, or lower cognitive cost for every user and repository."],
|
|
134
|
+
"lifecycle": {"state": "active", "replacementRequirementIds": [], "evidenceRefs": []},
|
|
135
|
+
"deferral": null,
|
|
136
|
+
"updatePolicy": {"reviewOwnerId": "proofkit.agent-workflow", "requiresImpactDeclaration": true, "requiresProofBindingReview": true}
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"requirementId": "REQ-PROOFKIT-WORKFLOW-011",
|
|
140
|
+
"ownerId": "proofkit.agent-workflow",
|
|
141
|
+
"invariant": "Every admitted workflow command, option, and runtime guidance resource participates in one finite factorized relation over carrier identity, global-option position/cardinality/value, command-option cardinality/value, help exclusivity, positional-operand count, input transport, output mode, envelope, and presentation capability; that relation is closed across descriptor, dedicated dispatcher, command family, help, contract-map route, root-shape CLI input/output summary, positive whole-process witness, independent negative falsifier, generated contract projection, breaking version-edge wire observation, and supported installed npm and wheel smokes for each admitted CLI carrier that exercise required input, pre-read input-pointer admission, JSON layout, agent envelope, text, color denial, exclusive help, surplus positional operands, and no-input guidance classes as applicable; the npm package admits the durable workflow specification as channel-specific non-runtime documentation through its existing docs projection, every runtime-required resource remains closed in each package channel, the selected topology adds no external runtime or template resource, and omission, surplus, cross-wire, or stale projection fails the repository gate.",
|
|
142
|
+
"claimLevel": "blocking",
|
|
143
|
+
"riskClass": "high",
|
|
144
|
+
"proofBindingRefs": ["proofkit/requirement-bindings.json"],
|
|
145
|
+
"nonClaimRefs": ["NC-PROOFKIT-WORKFLOW-011"],
|
|
146
|
+
"nonClaims": ["Public-surface closure does not claim wheel documentation parity and does not prove registry publication, provider ingestion, compatibility on untested platforms, native witness truth, merge approval, rollout, or production readiness."],
|
|
147
|
+
"lifecycle": {"state": "active", "replacementRequirementIds": [], "evidenceRefs": []},
|
|
148
|
+
"deferral": null,
|
|
149
|
+
"updatePolicy": {"reviewOwnerId": "proofkit.agent-workflow", "requiresImpactDeclaration": true, "requiresProofBindingReview": true}
|
|
150
|
+
}
|
|
151
|
+
],
|
|
152
|
+
"nonClaims": [
|
|
153
|
+
"Generated plans, prompts, templates, envelopes, views, reports, and patches remain derived guidance and are not semantic, proof, merge, release, rollout, or readiness authority.",
|
|
154
|
+
"Proofkit does not own consuming-repository requirement meaning, engineering policy, witnesses, merge decisions, release decisions, rollout decisions, or production-readiness decisions.",
|
|
155
|
+
"This source neither selects nor authorizes a persisted requirement-source codec or a migration away from the current requirement source."
|
|
156
|
+
]
|
|
157
|
+
}
|
|
@@ -35,9 +35,13 @@ execution receipts, and merge policy.
|
|
|
35
35
|
candidates explicit, keep merge approval consumer-owned, and fail closed for
|
|
36
36
|
unknown or unmatched proof inputs.
|
|
37
37
|
- `REQ-PROOFKIT-SPEC-005`: rendered proof views and agent envelopes remain
|
|
38
|
-
bounded, reference-closed derived presentations over structured source
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
bounded, reference-closed derived presentations over structured source and
|
|
39
|
+
never become canonical proof or requirement authority; agent envelopes also
|
|
40
|
+
admit lossless safe local identities before display sanitization, omit unsafe
|
|
41
|
+
identities without turning a redaction label into a lookup key, count each
|
|
42
|
+
semantic omission once, and use unique, pairwise-disjoint local target-ID
|
|
43
|
+
domains so each retained untyped local reference resolves to at most one
|
|
44
|
+
target in their union.
|
|
41
45
|
- `REQ-PROOFKIT-SPEC-006`: test evidence inventory, explicit test-discovery
|
|
42
46
|
draft projections, proof-binding-derived inventory projections, normalized
|
|
43
47
|
inventory projections, coverage-view input composition, and requirement
|
|
@@ -116,9 +116,9 @@
|
|
|
116
116
|
{
|
|
117
117
|
"requirementId": "REQ-PROOFKIT-SPEC-005",
|
|
118
118
|
"ownerId": "proofkit.spec-proof-core",
|
|
119
|
-
"invariant": "Rendered proof views and agent envelopes remain bounded, reference-closed derived presentations over structured source, count each semantic omission once, and
|
|
119
|
+
"invariant": "Rendered proof views and agent envelopes remain bounded, reference-closed derived presentations over structured source and never become canonical proof or requirement authority; agent envelopes additionally admit local target IDs and untyped local references as lossless safe identities before display sanitization, omit unsafe identities without using a replacement label as a lookup key, count each semantic omission once, and require target IDs to be unique within each local domain and pairwise disjoint across local domains so every retained untyped local reference resolves to at most one target in their union.",
|
|
120
120
|
"claimLevel": "blocking",
|
|
121
|
-
"riskClass": "
|
|
121
|
+
"riskClass": "high",
|
|
122
122
|
"proofBindingRefs": [
|
|
123
123
|
"proofkit/requirement-bindings.json"
|
|
124
124
|
],
|
|
@@ -160,10 +160,16 @@ vulnerability absence, or consumer rollout safety by itself.
|
|
|
160
160
|
failed attempts retain attempt-scoped action, DOM, network, and source traces
|
|
161
161
|
without continuous screenshot capture plus a bounded best-effort failure
|
|
162
162
|
screenshot, without creating passed proof.
|
|
163
|
-
- `REQ-PROOFKIT-QUALITY-023`:
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
163
|
+
- `REQ-PROOFKIT-QUALITY-023`: npm platform binaries and Python wheels
|
|
164
|
+
independently bind to the same release binary for every target; a separate
|
|
165
|
+
bounded decoder also compares the final tar and wheel members directly,
|
|
166
|
+
without a mutable intermediate; package-set wheel and embedded-binary digest
|
|
167
|
+
claims, including npm SHA-1/SRI, must equal bytes decoded from one immutable
|
|
168
|
+
snapshot and release closeout recomputes them through repository-confined,
|
|
169
|
+
bounded, identity-checked non-symlink handles; wheels bind advertised platform
|
|
170
|
+
compatibility to decoded executable bytes, reject version, identity,
|
|
171
|
+
presence, and digest drift, and carry Core Metadata 2.4 plus an exact,
|
|
172
|
+
RECORD-closed repository license payload.
|
|
167
173
|
- `REQ-PROOFKIT-QUALITY-024`: a closed version-bound machine record binds the
|
|
168
174
|
exact previous/current SemVer pair and compatible/breaking class, declares the
|
|
169
175
|
exact complete current breaking, addition, and migration inventories
|
|
@@ -180,6 +186,18 @@ vulnerability absence, or consumer rollout safety by itself.
|
|
|
180
186
|
commit identities, admitted status expressions, the required aggregate shell
|
|
181
187
|
program, and read-only treatment of an existing release are source-oracle
|
|
182
188
|
invariants.
|
|
189
|
+
- `REQ-PROOFKIT-QUALITY-026`: every public or retained-evidence stable JSON
|
|
190
|
+
implementation accepts only the repository-pinned Unicode scalar set and matches one
|
|
191
|
+
preimplementation byte corpus for the pinned control, format, and separator
|
|
192
|
+
table without changing decoded values.
|
|
193
|
+
- `REQ-PROOFKIT-QUALITY-027`: report-visible diagnostics and structural text
|
|
194
|
+
apply the same scalar, Unicode-whitespace, control/format, and split-secret
|
|
195
|
+
taxonomy, replace rejected caller values as a whole without echoing any
|
|
196
|
+
fragment, bound diagnostic output, and own dynamic Go/JavaScript error
|
|
197
|
+
projection plus failure-only bounded child-process diagnostics for repository
|
|
198
|
+
tools. On supported Unix hosts, an installed-carrier success additionally
|
|
199
|
+
requires confirmed process-group absence after the parent is reaped; cleanup
|
|
200
|
+
timeout is an explicit failure rather than a successful terminal result.
|
|
183
201
|
|
|
184
202
|
## Non-Claims
|
|
185
203
|
|
|
@@ -298,7 +298,7 @@
|
|
|
298
298
|
{
|
|
299
299
|
"requirementId": "REQ-PROOFKIT-QUALITY-023",
|
|
300
300
|
"ownerId": "proofkit.supply-chain-quality",
|
|
301
|
-
"invariant": "
|
|
301
|
+
"invariant": "Every npm platform-binary tar entry and every Python wheel independently binds its embedded executable bytes to the same release-platform binary, and release metadata generation admits every final npm tarball, wheel, and SBOM exactly once into one bounded regular non-symlink immutable snapshot, derives npm pack SHA-1 and SRI claims, final carrier decoding, direct chunked binary equality, wheel and embedded-binary digests, release checksums, and SBOM-subject checksums only from that epoch, requires every npm pack and Python package-set digest claim to equal those decoded bytes, and revalidates every source identity before metadata persistence without relying on a mutable intermediate dist directory or claimed digests; release closeout independently reopens every declared repository-confined npm tarball and wheel through bounded identity-checked non-symlink handles, recomputes npm SHA-1 and SRI plus both wheel and embedded-binary digests, and rejects unsafe or duplicate archive topology before accepting package evidence; both tar and wheel decoders reject duplicate entry names and require exact release-platform closure; the wheel-set verifier independently rejects version drift, duplicate identities, missing files, and SHA drift; each wheel independently decodes Darwin Mach-O bytes so an advertised macOS platform minimum is never lower than the executable minimum, uses Core Metadata 2.4 License-Expression and License-File fields, carries an exact repository LICENSE copy under the wheel licenses directory, and closes every payload entry through RECORD.",
|
|
302
302
|
"claimLevel": "blocking",
|
|
303
303
|
"riskClass": "critical",
|
|
304
304
|
"proofBindingRefs": ["proofkit/requirement-bindings.json"],
|
|
@@ -333,6 +333,32 @@
|
|
|
333
333
|
"lifecycle": {"state": "active", "replacementRequirementIds": [], "evidenceRefs": []},
|
|
334
334
|
"deferral": null,
|
|
335
335
|
"updatePolicy": {"reviewOwnerId": "proofkit.supply-chain-quality", "requiresImpactDeclaration": true, "requiresProofBindingReview": true}
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
"requirementId": "REQ-PROOFKIT-QUALITY-026",
|
|
339
|
+
"ownerId": "proofkit.supply-chain-quality",
|
|
340
|
+
"invariant": "Every repository-owned stable JSON implementation used by a public or retained-evidence path accepts only Unicode 15.0.0 scalar strings, rejecting malformed UTF-8 byte strings and unpaired UTF-16 surrogates as applicable, emits the same deterministic semantic-preserving JSON escapes for the pinned Cc, Cf, Zl, and Zp range table, preserves ordinary decoded values, and remains byte-compatible with one versioned owner-authored literal range corpus whose Go projection is exhaustively checked against the Unicode 15.0.0 category oracle and whose JavaScript and generated TypeScript projections are exhaustively checked over the scalar domain.",
|
|
341
|
+
"claimLevel": "blocking",
|
|
342
|
+
"riskClass": "high",
|
|
343
|
+
"proofBindingRefs": ["proofkit/requirement-bindings.json"],
|
|
344
|
+
"nonClaimRefs": ["NC-PROOFKIT-QUALITY-026"],
|
|
345
|
+
"nonClaims": ["This bounded encoding policy does not prove terminal-rendering equivalence or safety of arbitrary downstream decoders."],
|
|
346
|
+
"lifecycle": {"state": "active", "replacementRequirementIds": [], "evidenceRefs": []},
|
|
347
|
+
"deferral": null,
|
|
348
|
+
"updatePolicy": {"reviewOwnerId": "proofkit.supply-chain-quality", "requiresImpactDeclaration": true, "requiresProofBindingReview": true}
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
"requirementId": "REQ-PROOFKIT-QUALITY-027",
|
|
352
|
+
"ownerId": "proofkit.supply-chain-quality",
|
|
353
|
+
"invariant": "Every report-visible diagnostic and structural-text sanitizer accepts only Unicode 15.0.0 scalar strings, recognizes one explicit Unicode whitespace alphabet plus the pinned Cc, Cf, Zl, and Zp range table and contiguous or control-split secret-shaped values through one shared taxonomy, replaces any rejected caller-owned value as a whole with one fixed command-owned label without emitting its bytes, code points, prefix, suffix, or caller-controlled replacement text, and bounds admitted diagnostic projection to 512 Unicode scalars; every Go and JavaScript repository tool entrypoint routes dynamic errors through that owner, failed child-process stderr that enters this diagnostic boundary is captured under a fixed byte limit before whole-value sanitization while successful child stderr is not projected, direct child stderr wiring is rejected, and the installed-carrier smoke adapter bounds stdout, stderr, time, and cleanup; on supported Unix hosts, a successful installed-carrier result requires confirmed process-group absence after the command parent is reaped, while cleanup timeout or probe failure is an explicit failed operation rather than a successful terminal result.",
|
|
354
|
+
"claimLevel": "blocking",
|
|
355
|
+
"riskClass": "high",
|
|
356
|
+
"proofBindingRefs": ["proofkit/requirement-bindings.json"],
|
|
357
|
+
"nonClaimRefs": ["NC-PROOFKIT-QUALITY-027"],
|
|
358
|
+
"nonClaims": ["This bounded diagnostic taxonomy does not prove confidentiality of values outside its admitted secret and control classes or claim that every repository-internal tool invocation uses the installed-carrier timeout policy."],
|
|
359
|
+
"lifecycle": {"state": "active", "replacementRequirementIds": [], "evidenceRefs": []},
|
|
360
|
+
"deferral": null,
|
|
361
|
+
"updatePolicy": {"reviewOwnerId": "proofkit.supply-chain-quality", "requiresImpactDeclaration": true, "requiresProofBindingReview": true}
|
|
336
362
|
}
|
|
337
363
|
]
|
|
338
364
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@research-engineering/agentic-proofkit",
|
|
3
3
|
"description": "Reusable proof profile, report, graph, and witness-planning primitives.",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.5.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"sideEffects": false,
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"build": "go run ./internal/tools/packagebuild",
|
|
37
37
|
"check": "npm run npm:version && npm run source-hygiene && npm run command-contract:check && npm run command-family:check && npm run text-policy && npm run mermaid:check && npm run go:check && npm run browser:check && npm run package:artifact && npm run self:receipt && npm run self:coverage && npm run release:closeout",
|
|
38
38
|
"browser:check": "npm run browser:static-check && npm run browser:test",
|
|
39
|
-
"browser:static-check": "tsc -p tsconfig.browser.json && node --test scripts/browser-proof-execution.test.mjs scripts/browser-proof-inputs.test.mjs scripts/browser-selection-authority.test.mjs scripts/stable-json.test.mjs",
|
|
39
|
+
"browser:static-check": "tsc -p tsconfig.browser.json && node --test scripts/browser-proof-execution.test.mjs scripts/browser-proof-inputs.test.mjs scripts/browser-selection-authority.test.mjs scripts/diagnostic-entrypoints.test.mjs scripts/stable-json.test.mjs",
|
|
40
40
|
"browser:test": "go run ./internal/tools/browserproofverify --run",
|
|
41
41
|
"command-family:check": "go run ./internal/tools/commandfamilygen --check",
|
|
42
42
|
"go:actionlint": "go tool actionlint",
|