feat: finish register receiving and authority routing
Assistant: codex Assistant-Model: gpt-5.6-sol Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
This commit is contained in:
parent
6d134425df
commit
d103955217
28 changed files with 970 additions and 48 deletions
|
|
@ -448,10 +448,20 @@ def place(path: Path, *, reef: str, family_root: Path | None = None) -> dict[str
|
|||
if reef not in COMPUTE_REEFS and not (search / reef).is_dir():
|
||||
return _refuse(f"reef {reef!r} is not a known compute reef")
|
||||
text = declaration.read_text()
|
||||
if re.search(r"^bound_reefs:\n - ", text, re.M):
|
||||
text = re.sub(r"^bound_reefs:\n(?: - .+\n)+", f"bound_reefs:\n - {reef}\n", text, flags=re.M)
|
||||
if re.search(r"^bound_reefs:\n - ", text, re.MULTILINE):
|
||||
text = re.sub(
|
||||
r"^bound_reefs:\n(?: - .+\n)+",
|
||||
f"bound_reefs:\n - {reef}\n",
|
||||
text,
|
||||
flags=re.MULTILINE,
|
||||
)
|
||||
else:
|
||||
text = re.sub(r"^bound_reefs:\s*\[\]\s*$", f"bound_reefs:\n - {reef}", text, flags=re.M)
|
||||
text = re.sub(
|
||||
r"^bound_reefs:\s*\[\]\s*$",
|
||||
f"bound_reefs:\n - {reef}",
|
||||
text,
|
||||
flags=re.MULTILINE,
|
||||
)
|
||||
if "exposure:" in text and "posture: public" in text:
|
||||
return _refuse("place does not grant public exposure; edit exposure separately")
|
||||
declaration.write_text(text)
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ from __future__ import annotations
|
|||
|
||||
import re
|
||||
import uuid
|
||||
from datetime import UTC, datetime
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
|
|
@ -16,6 +15,7 @@ from repo_manager.gitops import GitError, commit_paths, head_sha, push_ff
|
|||
from repo_manager.index_store import append_event, default_index_path, save_index
|
||||
from repo_manager.observe import observe_repository
|
||||
from repo_manager.parse.record import iter_record_files, parse_record_file
|
||||
from repo_manager.time import utc_now_text
|
||||
|
||||
_ID_RE = re.compile(r"^[A-Za-z0-9][A-Za-z0-9._:-]{1,127}$")
|
||||
_PROTECTED = frozenset(
|
||||
|
|
@ -39,7 +39,7 @@ _OPERATIONS = {
|
|||
|
||||
|
||||
def _now() -> str:
|
||||
return datetime.now(UTC).isoformat()
|
||||
return utc_now_text()
|
||||
|
||||
|
||||
def _reject(command: str, correlation_id: str, code: str, message: str, **evidence: Any) -> CommandResult:
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ from __future__ import annotations
|
|||
|
||||
import re
|
||||
import uuid
|
||||
from datetime import UTC, datetime
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
|
|
@ -16,6 +15,7 @@ from repo_manager.gitops import GitError, commit_paths, head_sha, push_ff
|
|||
from repo_manager.index_store import append_event, default_index_path, save_index
|
||||
from repo_manager.observe import observe_repository
|
||||
from repo_manager.parse.register import REGISTER_SCHEMA, SUPPORTED_REGISTER_KINDS, register_path
|
||||
from repo_manager.time import utc_now_text
|
||||
|
||||
_ENTRY_ID_RE = re.compile(r"^[A-Za-z0-9][A-Za-z0-9._:-]{1,127}$")
|
||||
_PROTECTED_FIELDS = frozenset({"id", "title", "status", "notes", "created", "updated"})
|
||||
|
|
@ -30,7 +30,7 @@ _REQUIRED_DATA = {
|
|||
|
||||
|
||||
def _now() -> str:
|
||||
return datetime.now(UTC).isoformat()
|
||||
return utc_now_text()
|
||||
|
||||
|
||||
def _reject(command: str, correlation_id: str, code: str, message: str, **evidence: Any) -> CommandResult:
|
||||
|
|
|
|||
|
|
@ -4,12 +4,12 @@ from __future__ import annotations
|
|||
|
||||
import uuid
|
||||
from dataclasses import dataclass
|
||||
from datetime import date
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
from repo_manager.gitops import GitError, commit_paths, is_git_repo
|
||||
from repo_manager.standards import FLAVOR_MARKER_PREFIX, expected_workplan_prefix
|
||||
from repo_manager.time import utc_today
|
||||
|
||||
DURABLE_FLAVORS = ("experimental", "research", "tooling", "product", "business")
|
||||
FLAVORS = (*DURABLE_FLAVORS, "project")
|
||||
|
|
@ -124,7 +124,7 @@ def scaffold_repository(
|
|||
f"Workplan prefix: `{prefix}-`.\n",
|
||||
)
|
||||
if prj:
|
||||
today = date.today().isoformat()
|
||||
today = utc_today().isoformat()
|
||||
put(
|
||||
"GOAL.md",
|
||||
"---\n"
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import json
|
|||
import re
|
||||
import uuid
|
||||
from dataclasses import dataclass
|
||||
from datetime import UTC, date, datetime
|
||||
from datetime import date
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
|
|
@ -14,6 +14,7 @@ from repo_manager import dual_run, idempotency
|
|||
from repo_manager.gitops import GitError, commit_paths, head_sha, push_ff
|
||||
from repo_manager.index_store import append_event, default_index_path, save_index
|
||||
from repo_manager.observe import observe_repository
|
||||
from repo_manager.time import utc_today
|
||||
|
||||
VALID_WORKPLAN_STATUSES = frozenset(
|
||||
{"proposed", "ready", "active", "blocked", "backlog", "finished", "archived"}
|
||||
|
|
@ -80,7 +81,7 @@ def _quoted(value: str) -> str:
|
|||
|
||||
|
||||
def _today() -> date:
|
||||
return datetime.now(UTC).date()
|
||||
return utc_today()
|
||||
|
||||
|
||||
def _patch_frontmatter(text: str, updates: dict[str, str]) -> str | None:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue