2eb3227ad0ec57fb259d12f754a183dfafb94de2
1
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
3dadf2d3f5 |
feat(scaffolding): capability-fit discovery, gap decisions, toolchain resolution, layout contracts (SCAFFOLD-TRANCHE-003)
CI Pipeline / best-practices (push) Successful in 6s
CI Pipeline / documentation (push) Successful in 6s
CI Pipeline / canary (push) Successful in 31s
CI Pipeline / lint (push) Successful in 46s
Auto-version and Release / release (push) Successful in 54s
CI Pipeline / gitea-offline (push) Successful in 17s
CI Pipeline / unit-tests (push) Successful in 1m9s
CI Pipeline / type-check (push) Successful in 30s
CI Pipeline / required-checks (push) Successful in 4s
deploy / deploy (push) Successful in 3m14s
- capability_fit.py: open-world CapabilityRequirement; deterministic candidate discovery over Spine/Scaffold stores (kind + providing- relationship eligible; environment-contradiction excluded); fit levels EXACT/PARTIAL/INCOMPATIBLE/UNKNOWN from contracts+health, never names; resolution surface SATISFIED/REUSE/CONFIGURE/COMPOSE/ADAPT_EXISTING/ ACQUIRE_EXTERNAL/BUILD_NEW/INSUFFICIENT_EVIDENCE — BUILD_NEW never silent (insufficient evidence blocks it), brittle-coupling check (load-bearing missing contracts) forces BUILD_NEW or ACQUIRE with recorded rationale; composition covers via contract union, flagged temporary (permanence user-controlled); LLM semantic-fit seam records provider/model/reason/evidence/confidence — prose never authority - toolchain.py: EXISTING PROJECT TOOLCHAIN WINS; constraint keys fixed and language-free, values open-world; language change = CHANGE_MAJOR requiring user approval, never silent; unknown constraints -> INSUFFICIENT_EVIDENCE (no invented certainty); Python only selected because the project uses it — fixtures prove rust/ts/zig resolve - layout_contract.py: open-world regions (web/tui/qt coexist); stable ui:<component> identity surviving implementation changes; LOCKED requires user provenance (mechanically enforced); locked amendment requires authorized_by=user (enforced, reason required); deterministic adapter-observation gate PASS/FAIL/UNKNOWN — UNKNOWN never PASS; USER-LOCKED drift preserves the contract (deliberate exception to reality-wins), marks DRIFTING, creates maintenance item; flexible violation fails gate until repaired - REAL TUI PROOF: Rune's actual version display (issue #105, plan plans/2026-09-03-tui-footer.md) observed from source via deterministic adapter — footer-bar first child; gate cycle PASS -> controlled violation FAIL -> restore PASS; binding encoded scaffold-provenance (durable records establish placement; USER LOCK upgrade NEEDS CONFIRMATION — not fabricated) - capability/layout integration proven: version-display requirement discovers the existing capability + layout binding (REUSE), never builds another widget - 3 modules registered in Spine authority + canonical build + manifest regenerated (Tranche 2 lesson applied: no hand-edited structural facts) Tests: 53 new (fit 24 + toolchain 9 + layout 16 + real proof 4); suite 1439 green; henxels rc=0; pyright 0 errors on new modules. |