Skip to content

Commit c03b9ef

Browse files
bugerclaude
andcommitted
feat: add property-based obligation classes with 24 new SYS-REQs
Added determinism, idempotency, nil_safety, encoding_safety, and edge_case obligation classes across all 7 STK-REQs. Created 24 derived SYS-REQs with FRETish formulas, 48 new variables, and 24 tests covering: - Determinism: all parse functions produce identical results on repeat - Idempotency: Get doesn't mutate input, Set applied twice = once - Nil safety: all APIs handle nil input without panicking - Encoding safety: Unicode escape round-trip fidelity - Edge cases: 64-level nesting, BOM/ZWJ chars, max int64, 100-digit numbers Audit: 0 errors, 0 warnings, 117 requirements. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 9c46110 commit c03b9ef

35 files changed

Lines changed: 4766 additions & 1130 deletions

obligation_property_test.go

Lines changed: 873 additions & 0 deletions
Large diffs are not rendered by default.

proof.yaml

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,11 @@ project:
2727
- truncated_escape_sequence
2828
- partial_literal
2929
- truncated_mid_element
30+
- determinism
31+
- idempotency
32+
- nil_safety
33+
- encoding_safety
34+
- edge_case
3035
commands:
3136
build: go build ./...
3237
test: mkdir -p .proof/coverage .proof/test-results && go test ./... -count=1 -coverprofile=.proof/coverage/unit.coverprofile -json > .proof/test-results/go-test.json 2>&1
@@ -67,9 +72,9 @@ project:
6772
enabled: true
6873
mcdc_coverage: {}
6974
proof_complexity_clean:
70-
max_formalized_requirements: 95
71-
max_variables: 220
72-
max_guarantees: 95
75+
max_formalized_requirements: 120
76+
max_variables: 280
77+
max_guarantees: 120
7378
evidence_diversity:
7479
min_classes:
7580
A: 3

reviews/trace-link-reviews.yaml

Lines changed: 2439 additions & 1127 deletions
Large diffs are not rendered by default.

specs/stakeholder/requirements/STK-REQ-001.req.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,10 @@ stakeholder:
5959
- SYS-REQ-045
6060
- SYS-REQ-046
6161
- SYS-REQ-047
62+
- SYS-REQ-086
63+
- SYS-REQ-087
64+
- SYS-REQ-088
65+
- SYS-REQ-089
6266
obligation_checklist:
6367
- nominal
6468
- missing_path
@@ -71,6 +75,10 @@ stakeholder:
7175
- type_mismatch
7276
- negative_array_index
7377
- sentinel_value_boundary
78+
- determinism
79+
- idempotency
80+
- nil_safety
81+
- edge_case
7482
lifecycle:
7583
change_history:
7684
- date: "2026-04-13T16:25:24Z"

specs/stakeholder/requirements/STK-REQ-002.req.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,20 @@ stakeholder:
4444
- SYS-REQ-072
4545
- SYS-REQ-073
4646
- SYS-REQ-074
47+
- SYS-REQ-090
48+
- SYS-REQ-091
49+
- SYS-REQ-092
50+
- SYS-REQ-093
4751
obligation_checklist:
4852
- nominal
4953
- malformed_input
5054
- truncated_escape_sequence
5155
- type_mismatch
5256
- empty_input
57+
- determinism
58+
- nil_safety
59+
- encoding_safety
60+
- edge_case
5361
lifecycle:
5462
change_history:
5563
- date: "2026-04-13T17:14:56Z"

specs/stakeholder/requirements/STK-REQ-003.req.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,19 @@ stakeholder:
5555
derived_reqs:
5656
- SYS-REQ-005
5757
- SYS-REQ-079
58+
- SYS-REQ-094
59+
- SYS-REQ-095
60+
- SYS-REQ-096
5861
obligation_checklist:
5962
- nominal
6063
- malformed_input
6164
- boundary
6265
- type_mismatch
6366
- empty_input
6467
- partial_literal
68+
- determinism
69+
- nil_safety
70+
- edge_case
6571
lifecycle:
6672
change_history:
6773
- date: "2026-04-13T17:14:56Z"

specs/stakeholder/requirements/STK-REQ-004.req.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,9 @@ stakeholder:
6464
derived_reqs:
6565
- SYS-REQ-008
6666
- SYS-REQ-085
67+
- SYS-REQ-097
68+
- SYS-REQ-098
69+
- SYS-REQ-099
6770
obligation_checklist:
6871
- nominal
6972
- empty_input
@@ -73,6 +76,9 @@ stakeholder:
7376
- truncated_mid_element
7477
- callback_error_propagation
7578
- sentinel_value_boundary
79+
- determinism
80+
- nil_safety
81+
- edge_case
7682
lifecycle:
7783
change_history:
7884
- date: "2026-04-13T17:14:56Z"

specs/stakeholder/requirements/STK-REQ-005.req.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,9 @@ stakeholder:
5858
- SYS-REQ-049
5959
- SYS-REQ-050
6060
- SYS-REQ-056
61+
- SYS-REQ-100
62+
- SYS-REQ-101
63+
- SYS-REQ-102
6164
obligation_checklist:
6265
- nominal
6366
- missing_path
@@ -69,6 +72,9 @@ stakeholder:
6972
- nested_mutation
7073
- error_propagation
7174
- sentinel_value_boundary
75+
- idempotency
76+
- nil_safety
77+
- edge_case
7278
lifecycle:
7379
change_history:
7480
- date: "2026-04-13T17:16:45Z"

specs/stakeholder/requirements/STK-REQ-006.req.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,17 @@ stakeholder:
4343
- SYS-REQ-080
4444
- SYS-REQ-081
4545
- SYS-REQ-082
46+
- SYS-REQ-103
47+
- SYS-REQ-104
48+
- SYS-REQ-105
4649
obligation_checklist:
4750
- nominal
4851
- malformed_input
4952
- empty_input
5053
- truncated_at_value_boundary
54+
- determinism
55+
- nil_safety
56+
- edge_case
5157
lifecycle:
5258
change_history:
5359
- date: "2026-04-13T17:27:00Z"

specs/stakeholder/requirements/STK-REQ-007.req.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,13 +73,21 @@ stakeholder:
7373
- SYS-REQ-058
7474
- SYS-REQ-059
7575
- SYS-REQ-064
76+
- SYS-REQ-106
77+
- SYS-REQ-107
78+
- SYS-REQ-108
79+
- SYS-REQ-109
7680
obligation_checklist:
7781
- nominal
7882
- malformed_input
7983
- boundary
8084
- partial_literal
8185
- truncated_escape_sequence
8286
- empty_input
87+
- determinism
88+
- nil_safety
89+
- encoding_safety
90+
- edge_case
8391
lifecycle:
8492
change_history:
8593
- date: "2026-04-13T17:27:00Z"

0 commit comments

Comments
 (0)