Skip to content

OwnFramework Loop v1.1.2 — contract and audit closure

Latest

Choose a tag to compare

@william-london william-london released this 04 Oct 01:12
· 2 commits to master since this release

Narrow maintenance release closing the concrete correctness, contract, regression, documentation, and host-state defects proven by a read-only architectural audit of the runtime.

No product-acceptance architecture changed. The audit's adjudication was that the framework was already sufficient and that the observed failures were attributable to a weak semantic model that did not exercise machinery already provisioned for it — not to a missing authority or evidence path. No product-type or target-user schema, required-surface manifest, visual-review machinery, screenshot manifest, PROGRAM_FINAL harness, client subsystem, new PROGRAM state, mandatory container behavior in the core, or added browser/computer-use/network/MCP authority.

Closed in this release

  • Acceptance-criterion verification is functional packet authority. Every packet generation accepted the field and the shipped example populated it, but the single canonical projection feeding both the builder and reviewer work order rebuilt each criterion as {id, text} only — the field was silently discarded before either role could see it. The exact authored value now reaches SINGLE, PROGRAM checkpoint, and PROGRAM_FINAL scopes. Absence stays absent; blank is omitted; nothing is derived; it remains proof guidance, never an authoritative PASS.
  • Semantic acceptance/non-goal coverage is regression-proven. The semantic_coverage_incomplete branch — the guard preventing approval for under-reporting coverage — occurred exactly once in source and nowhere in the test suite. New coverage drives the real finalizer across missing, duplicate, and unexpected ACs, a missing non-goal, complete coverage still approving, checkpoint scope rejecting future-checkpoint ACs, and both cases at PROGRAM_FINAL. Coverage only; no verdict semantics changed.
  • Cross-role worktree isolation is structural. It was true only incidentally, because a repository under $HOME is already covered by the broad deny; a repository outside $HOME left the sibling worktree unlisted. The path-policy owner now denies the sibling explicitly. The rule can only remove potential authority.
  • One SPEC doctrine. The portable host-neutral mirror had lost the local-service/container inference rule, the rendered-artifact and generated-document rules, the prohibition on automatically adding a browser capability and on encoding product-type rules into deterministic Python, the fail-honestly-before-launch rule, and the whole-lifetime sizing rule. skills/spec/SKILL.md is the declared canonical owner; conformance now asserts the shared normative fragments in both copies, targeting doctrine rather than bytes.
  • Reviewer/builder network-authority guidance corrected. Both role contracts asserted allowedDomains: [] unconditionally; the real effective set is the union of the packet's frozen network_read_allowlist with resolved capability domains under strictAllowlist: true. The prose is now pinned to the source so it cannot drift again. The stronger research.public rule is retained: binding it adds no Bash network authority.
  • Bounded E2E validation pattern documented, including the process-group leak detector, refused detachment primitives, the uv-mediated network profile that drops local bind/inbound, and the shared packet-level timeout ceiling. No schema was expanded and no lifecycle protection relaxed.
  • Claude hook commands quote ${CLAUDE_PLUGIN_ROOT}. They previously used the placeholder unquoted, so a plugin path containing a space word-split and every Of-Loop hook silently failed open. A newer Claude CLI lint surfaced this; the CI claude-adapter lane could not pass until it was fixed.

Verification

  • Canonical suite: 156/156 PASS (OF_LOOP_TOTAL=156, OF_LOOP_PASSED=156, OF_LOOP_FAILED=0)
  • Release gate: PASS; install parity PASS; payload manifest 382/382; plugin validate PASS
  • Exact-master CI: run 37166130589, 10/10 lanes green at 162d3afb14ec3f6c203d2c053fa0b234bae6736d

Historical releases, including v1.1.1 and v1.1.0, are unchanged.