Nick
aab5159ccc
feat(scaffolding): Construction Pattern core — evidence-backed applicability, filtered obligation derivation, process guards (SCAFFOLD-TRANCHE-006)
Also §0 pre-flight: SCAFFOLD-TRANCHE-005 found approved/open (parent-
lifecycle neglect — child closed, parent forgotten); closed with real
existing evidence only, provenance recorded, process-defect entity added.
- construction_pattern.py: open-world ConstructionPattern (signals,
obligations with when-conditions, provenance, revision + history,
maturity, ext); evaluate_applicability — deterministic signal groups,
verdicts APPLIES/PARTIAL/DOES_NOT_APPLY/UNKNOWN, name similarity
establishes nothing, project exclusions override, model proposals stay
PENDING; derive_pattern_obligations — obligations FILTERED by project
evidence (REQUIRED/APPLICABLE/NOT_APPLICABLE/UNKNOWN + EXCEPTED with
provenance retained, §18); combine_pattern_obligations — dedupe with
also_from, conflicts surfaced never silently resolved (§26-27);
authority boundary: pattern = guidance, project evidence wins (§3)
- construction_patterns_builtin.py: 4 evidence-grounded patterns, all
appropriately immature (§15):
* capability-module-adaptation (UNIT-PROVEN; build-but-don't-break;
provenance T1/T3/T4 contracts)
* release-deployment-change (UNIT-PROVEN; 9 obligations incl.
fail-closed qualification, exact identity, staging!=promotion,
promotion truthfulness, monotonic ordering, negative+forward proofs,
deployed-identity verification; provenance deploy-order-race
incident + DEPLOY-MONOTONIC-001 + red-promotion incidents)
* ui-tui-structural-change (UNIT-PROVEN; layout inheritance, USER-LOCKED
preservation, UNKNOWN-never-PASS; provenance issue-105 + T3 real proof)
* store-schema-evolution (CANDIDATE; backward readability, roundtrip,
authority preservation, migration-only-if-needed; provenance T2/T4/T5)
- make_decision integration: APPLIES+PARTIAL patterns consulted (§7 —
per-obligation when-conditions do the precision work); provenance
PATTERN distinct from STRUCTURAL derivations (§8); pattern refs +
revisions carried into generated contracts (§17/§19)
- construction_guards.py + Scaffold.save_verified/verify_on_disk (§21-22):
Guard A durable-mutation readback — verify_on_disk is the pure no-write
readback that catches the forgotten-save lie (T5 defect class A);
Guard B source-edit postcondition — zero-match is a truthful no-op
(EditNoOp), expected-count + postcondition enforced (T5 defect class B)
- REAL PROOFS: §23 read-only replay of DEPLOY-MONOTONIC-001 Need —
release pattern APPLIES on evidence, 9 obligations derived WITHOUT the
Need listing them (negative/forward/monotonic/deployed-identity all
pattern-derived, provenance carried); resolution COMPOSE matches the
original repair; §24 live change save_verified/verify_on_disk — the
store pattern contributed store-roundtrip, an obligation the raw Need
did not state; §25 held-out — webhook-config-only deploy change does
NOT demand promotion rework but keeps release regression verification
Tests: 30 new (§28-§32 plans + held-out + live); suite 1556 green;
henxels rc=0; pyright clean.
2026-09-13 14:48:28 +01:00
..
2026-09-07 19:51:36 +01:00
2026-08-30 17:10:32 +01:00
2026-09-11 15:36:08 +01:00
2026-09-11 00:24:39 +01:00
2026-09-10 17:47:28 +01:00
2026-09-11 15:36:08 +01:00
2026-09-11 15:36:08 +01:00
2026-09-11 15:36:08 +01:00
2026-09-07 15:08:02 +01:00
2026-08-28 11:26:04 +01:00
2026-09-11 15:36:08 +01:00
2026-09-13 04:16:48 +01:00
2026-09-07 19:33:46 +01:00
2026-09-07 16:07:45 +01:00
2026-09-08 02:26:59 +01:00
2026-09-08 01:58:29 +01:00
2026-09-07 17:37:35 +01:00
2026-09-13 04:49:17 +01:00
2026-09-13 14:48:28 +01:00
2026-09-12 04:30:18 +01:00
2026-09-13 04:49:17 +01:00
2026-09-07 15:26:33 +01:00
2026-09-11 15:36:08 +01:00
2026-09-12 20:10:28 +01:00
2026-09-13 14:01:04 +01:00
2026-09-11 03:16:50 +01:00
2026-09-07 15:00:53 +01:00
2026-09-11 00:24:39 +01:00
2026-09-07 17:36:25 +01:00
2026-09-07 17:38:33 +01:00
2026-09-07 17:36:25 +01:00
2026-09-07 19:51:36 +01:00
2026-09-07 16:57:49 +01:00
2026-09-11 20:59:39 +01:00
2026-09-11 15:36:08 +01:00
2026-09-11 15:36:08 +01:00
2026-09-11 22:50:44 +01:00
2026-09-07 20:10:38 +01:00
2026-09-12 07:57:26 +01:00
2026-09-13 04:16:48 +01:00
2026-09-13 04:16:48 +01:00
2026-09-13 04:49:17 +01:00
2026-09-04 00:22:24 +01:00
2026-09-04 00:10:03 +01:00
2026-09-04 03:30:14 +01:00
2026-09-12 11:15:42 +01:00
2026-09-08 05:54:37 +01:00
2026-08-28 11:26:04 +01:00
2026-09-12 10:49:42 +01:00
2026-09-03 21:01:40 +01:00
2026-09-11 15:36:08 +01:00
2026-09-03 17:12:09 +01:00
2026-09-11 15:36:08 +01:00
2026-09-03 21:13:08 +01:00
2026-09-03 17:12:09 +01:00
2026-09-03 17:44:51 +01:00
2026-09-11 15:36:08 +01:00
2026-09-11 15:36:08 +01:00
2026-09-03 20:52:37 +01:00
2026-09-03 19:17:01 +01:00
2026-09-03 17:12:09 +01:00
2026-09-11 15:36:08 +01:00
2026-09-03 20:46:30 +01:00
2026-09-03 18:56:02 +01:00
2026-09-11 15:36:08 +01:00
2026-09-11 15:36:08 +01:00
2026-09-03 17:12:09 +01:00
2026-09-03 17:16:31 +01:00
2026-09-03 17:12:09 +01:00
2026-09-11 15:36:08 +01:00
2026-09-11 15:36:08 +01:00
2026-09-03 19:02:15 +01:00
2026-09-03 22:41:56 +01:00
2026-09-03 23:18:14 +01:00
2026-09-11 15:36:08 +01:00
2026-09-03 20:38:10 +01:00
2026-09-11 15:36:08 +01:00
2026-09-11 15:36:08 +01:00
2026-09-11 15:36:08 +01:00
2026-09-11 15:36:08 +01:00
2026-09-03 17:12:09 +01:00
2026-09-03 18:32:57 +01:00
2026-09-03 22:41:56 +01:00
2026-09-11 15:36:08 +01:00
2026-09-03 18:23:25 +01:00
2026-09-11 15:36:08 +01:00
2026-09-11 15:36:08 +01:00
2026-09-11 15:36:08 +01:00
2026-09-03 17:12:09 +01:00
2026-09-03 23:40:06 +01:00
2026-09-11 15:36:08 +01:00
2026-09-03 22:41:56 +01:00
2026-09-03 18:43:41 +01:00
2026-09-05 11:39:45 +01:00
2026-09-11 15:36:08 +01:00
2026-09-05 14:50:23 +01:00
2026-09-05 18:21:56 +01:00
2026-09-11 15:36:08 +01:00
2026-09-07 12:24:51 +01:00
2026-09-11 15:36:08 +01:00
2026-09-06 16:39:28 +01:00
2026-09-06 04:58:23 +01:00
2026-09-11 15:36:08 +01:00
2026-09-11 05:58:47 +01:00
2026-09-11 15:36:08 +01:00
2026-09-11 18:17:17 +01:00
2026-09-11 15:36:08 +01:00
2026-09-11 18:17:17 +01:00
2026-09-11 03:16:50 +01:00
2026-09-08 07:08:06 +01:00
2026-09-11 15:36:08 +01:00
2026-09-08 14:51:51 +01:00
2026-09-11 15:36:08 +01:00
2026-09-08 12:31:53 +01:00
2026-09-08 07:12:34 +01:00
2026-09-11 15:36:08 +01:00
2026-09-11 15:36:08 +01:00
2026-09-11 15:36:08 +01:00
2026-09-11 20:15:57 +01:00
2026-09-11 15:36:08 +01:00
2026-09-07 12:00:35 +01:00
2026-09-13 03:24:53 +01:00
2026-09-09 11:25:42 +01:00
2026-09-08 05:12:55 +01:00
2026-09-11 15:36:08 +01:00
2026-09-12 19:18:13 +01:00
2026-09-11 15:36:08 +01:00
2026-09-11 15:36:08 +01:00
2026-09-11 15:36:08 +01:00
2026-09-13 05:24:33 +01:00
2026-09-04 17:40:07 +01:00
2026-09-13 13:36:50 +01:00
2026-09-11 15:36:08 +01:00
2026-09-11 20:15:57 +01:00
2026-09-11 15:36:08 +01:00
2026-09-11 15:36:08 +01:00
2026-09-13 04:16:48 +01:00
2026-09-12 10:49:42 +01:00
2026-09-07 20:14:57 +01:00
2026-09-09 03:55:22 +01:00
2026-09-04 20:05:23 +01:00
2026-09-11 22:33:10 +01:00
2026-09-04 11:59:57 +01:00
2026-09-07 14:52:51 +01:00