develop #56

Merged
adrian.tkacz merged 17 commits from develop into main 2026-09-07 21:29:51 +00:00
Owner
No description provided.
- Document Forgejo as canonical and GitHub as automatic mirror (D-011)
- Make develop the agent integration branch; main is human-controlled
  promotion/release outside ordinary agent PR flow
- Add .kilo/rules (task system, Forgejo MCP, implementation discipline,
  validation) adapted from the Creatidy workflow patterns
- Close M2 as PASS (2026-09-06) with sanitized closeout evidence and
  owner trust/reset-visibility gates; M3 marked next, not started
- No product behavior changes
Freeze the M3 machine-interface semantics before any transport is
implemented (Forgejo issue #45, decision D-028):

- docs/machine-interfaces.md: authoritative REST v1 surface
  (/healthz, /v1/status, /v1/select, /v1/simulate), the three stdio MCP
  tools calling the application directly, error semantics (no-solution is
  HTTP 200; closed invalid_request/internal_error vocabulary), side-effect
  wording inheriting D-018, loopback-only binding without an auth layer,
  version boundaries, parity requirement and design scenarios.
- docs/decisions.md: D-028 record and U-008 narrowly resolved for M3
  (stable scarcity_router module identity; branding deferred).
- docs/architecture.md, docs/roadmap.md, README.md: frozen M3 sequence
  (M3a -> M3b -> M3c -> closeout) and documentation links.

Contracts only: no product source, test, or dependency change.
Single post-review remediation pass on PR #46 (issue #45); the frozen
surface and contract choices are unchanged.

- Freeze nested-contract version compatibility: the machine-interface
  contract includes the envelope AND the exposed domain documents; an
  incompatible nested-domain change requires a v1 compatibility serializer
  or a new major version; version-number-only bumps flow through when the
  wire shape stays compatible.
- Freeze request parsing strictness (duplicate JSON keys, NaN/Infinity
  constants -> 400 invalid_request), exact missing/null field semantics
  (replenishment_states null -> invalid_request; nested simulation
  override tri-state preserved), exactly-one requirement source, unknown
  profile_id -> invalid_request, and the logical MCP error payloads
  (invalid_request / internal_error).
- Correct D-028 and U-008 dates to the UTC convention (2026-09-06) and
  align the roadmap M3a gate dates.

Docs only: no source, test, or dependency change.
Reviewed-on: BioMedical-IT/scarcity-router#46
Reviewed-by: Adrian Tkacz <adrian.tkacz@creatidy.com>
- Introduced `canonical_snapshot_documents` function for consistent JSON output across CLI and REST interfaces.
- Updated `render_json` to utilize the new canonical serialization method.
- Added a new test suite in `test_server.py` to cover various aspects of the M3b REST adapter, including health checks, status retrieval, selection, simulation, and error handling.
- Implemented tests for strict JSON parsing and validation of request bodies.
- Ensured that the REST API responses align with direct application results for consistency.
Reviewed-on: BioMedical-IT/scarcity-router#50
Reviewed-by: Adrian Tkacz <adrian.tkacz@creatidy.com>
The operating-policy v5 update (PR #50) raised model-policy.json to
policy_version 5 after the M3b REST adapter landed; the upstream merge
updated the CLI test but the REST profile-path assertion and the
machine-interface versioning table still said 4.
Reviewed-on: BioMedical-IT/scarcity-router#51
Reviewed-by: Adrian Tkacz <adrian.tkacz@creatidy.com>
Reviewed-on: BioMedical-IT/scarcity-router#53
Reviewed-by: Adrian Tkacz <adrian.tkacz@creatidy.com>
Reviewed-on: BioMedical-IT/scarcity-router#55
Reviewed-by: Adrian Tkacz <adrian.tkacz@creatidy.com>
Sign in to join this conversation.
No description provided.