docassert 0.10.0__tar.gz → 0.10.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {docassert-0.10.0/docassert.egg-info → docassert-0.10.1}/PKG-INFO +1 -1
- {docassert-0.10.0 → docassert-0.10.1}/docassert/__init__.py +1 -1
- {docassert-0.10.0 → docassert-0.10.1}/docassert/bridge/plan.py +19 -3
- {docassert-0.10.0 → docassert-0.10.1/docassert.egg-info}/PKG-INFO +1 -1
- {docassert-0.10.0 → docassert-0.10.1}/tests/test_bridge.py +14 -0
- {docassert-0.10.0 → docassert-0.10.1}/LICENSE +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/NOTICE +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/README.md +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/__main__.py +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/consistency.yaml +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/criteria/adr.criteria.yaml +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/criteria/benefits-realization.criteria.yaml +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/criteria/brd.criteria.yaml +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/criteria/business-case.criteria.yaml +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/criteria/charter.criteria.yaml +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/criteria/data-migration-plan.criteria.yaml +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/criteria/frnfr.criteria.yaml +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/criteria/hypercare-plan.criteria.yaml +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/criteria/post-implementation-review.criteria.yaml +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/criteria/prd.criteria.yaml +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/criteria/project.criteria.yaml +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/criteria/qa-test-plan.criteria.yaml +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/criteria/raci-stakeholder.criteria.yaml +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/criteria/release-cutover-plan.criteria.yaml +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/criteria/risk-register.criteria.yaml +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/criteria/rollback-plan.criteria.yaml +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/criteria/runbook.criteria.yaml +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/criteria/status-report.criteria.yaml +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/criteria/test-cases.criteria.yaml +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/criteria/user-story.criteria.yaml +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/profiles/agile-delivery.yaml +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/profiles/lean-startup.yaml +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/profiles/regulated-industry.yaml +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/schema/adr.schema.json +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/schema/benefits-realization.schema.json +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/schema/brd.schema.json +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/schema/business-case.schema.json +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/schema/charter.schema.json +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/schema/data-migration-plan.schema.json +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/schema/frnfr.schema.json +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/schema/hypercare-plan.schema.json +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/schema/post-implementation-review.schema.json +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/schema/prd.schema.json +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/schema/project.schema.json +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/schema/qa-test-plan.schema.json +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/schema/raci-stakeholder.schema.json +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/schema/release-cutover-plan.schema.json +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/schema/risk-register.schema.json +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/schema/rollback-plan.schema.json +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/schema/runbook.schema.json +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/schema/status-report.schema.json +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/schema/test-cases.schema.json +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/schema/user-story.schema.json +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/skills/doc-to-pmo/SKILL.md +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/templates/adr.template.md +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/templates/benefits-realization.template.md +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/templates/brd.template.md +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/templates/business-case.template.md +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/templates/charter.template.md +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/templates/data-migration-plan.template.md +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/templates/frnfr.template.md +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/templates/hypercare-plan.template.md +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/templates/post-implementation-review.template.md +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/templates/prd.template.md +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/templates/project.template.md +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/templates/qa-test-plan.template.md +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/templates/raci-stakeholder.template.md +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/templates/release-cutover-plan.template.md +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/templates/risk-register.template.md +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/templates/rollback-plan.template.md +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/templates/runbook.template.md +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/templates/status-report.template.md +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/templates/test-cases.template.md +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/_data/templates/user-story.template.md +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/bridge/__init__.py +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/bridge/board.py +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/bridge/gh.py +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/bridge/ops.py +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/cli.py +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/config.py +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/consistency.py +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/extract.py +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/graph.py +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/loader.py +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/models.py +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/profiles.py +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/projects.py +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/report.py +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/rtm.py +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/scaffold.py +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/semantic.py +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/status/__init__.py +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/status/derive.py +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/status/render.py +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert/structural.py +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert.egg-info/SOURCES.txt +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert.egg-info/dependency_links.txt +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert.egg-info/entry_points.txt +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert.egg-info/requires.txt +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/docassert.egg-info/top_level.txt +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/pyproject.toml +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/setup.cfg +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/tests/test_badge.py +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/tests/test_config.py +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/tests/test_consistency.py +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/tests/test_defects.py +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/tests/test_draft_relaxation.py +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/tests/test_extract.py +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/tests/test_graph.py +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/tests/test_json_report.py +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/tests/test_kinds_delivery.py +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/tests/test_kinds_governance.py +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/tests/test_kinds_operate.py +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/tests/test_kinds_reporting.py +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/tests/test_profiles.py +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/tests/test_projects.py +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/tests/test_scaffold.py +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/tests/test_status.py +0 -0
- {docassert-0.10.0 → docassert-0.10.1}/tests/test_structural.py +0 -0
|
@@ -7,6 +7,7 @@ anywhere in the bridge, writes to documents/.
|
|
|
7
7
|
"""
|
|
8
8
|
from __future__ import annotations
|
|
9
9
|
|
|
10
|
+
import os
|
|
10
11
|
from dataclasses import dataclass, field
|
|
11
12
|
from pathlib import Path
|
|
12
13
|
|
|
@@ -54,6 +55,18 @@ class BridgePlan:
|
|
|
54
55
|
return {f.id for f in self.features} | {s.id for s in self.stories}
|
|
55
56
|
|
|
56
57
|
|
|
58
|
+
def _repo_rel(path: str, documents_dir: Path) -> str:
|
|
59
|
+
"""Path relative to the docs repo root (the parent of documents_dir).
|
|
60
|
+
|
|
61
|
+
Issue bodies link Source as {docs_url}/{doc_path}, and docs_url points at
|
|
62
|
+
the docs repository. When CI checks that repository out into a
|
|
63
|
+
subdirectory, load paths carry the checkout prefix; stripping down to the
|
|
64
|
+
repo root keeps the links valid wherever the docs are checked out.
|
|
65
|
+
"""
|
|
66
|
+
rel = os.path.relpath(path, documents_dir.parent)
|
|
67
|
+
return path if rel.startswith("..") else Path(rel).as_posix()
|
|
68
|
+
|
|
69
|
+
|
|
57
70
|
def _title(item_text: str, limit: int = 64) -> str:
|
|
58
71
|
"""First sentence of the item text, trimmed for an issue title."""
|
|
59
72
|
first = item_text.split(". ")[0].rstrip(".")
|
|
@@ -126,14 +139,17 @@ def build_bridge_plan(documents_dir: str | Path = "documents") -> BridgePlan:
|
|
|
126
139
|
feat = features.get(parent.id)
|
|
127
140
|
if feat is None:
|
|
128
141
|
feat = Feature(id=parent.id, text=parent.text,
|
|
129
|
-
doc_path=parent.doc_path,
|
|
142
|
+
doc_path=_repo_rel(parent.doc_path,
|
|
143
|
+
documents_dir),
|
|
144
|
+
project=proj_id)
|
|
130
145
|
feat.acceptance = [(a.id, a.text) for a in
|
|
131
146
|
graph.children(parent.id, "verifies", "AC")]
|
|
132
147
|
for aid, _ in feat.acceptance:
|
|
133
148
|
feat.tests += [t.id for t in graph.children(aid, "tests", "TC")]
|
|
134
149
|
features[parent.id] = feat
|
|
135
|
-
feat.stories.append(Story(
|
|
136
|
-
|
|
150
|
+
feat.stories.append(Story(
|
|
151
|
+
id=s.id, text=s.text, feature_id=parent.id,
|
|
152
|
+
doc_path=_repo_rel(s.doc_path, documents_dir)))
|
|
137
153
|
if problems:
|
|
138
154
|
plan.skipped.append({"id": proj_id,
|
|
139
155
|
"reason": "; ".join(problems)})
|
|
@@ -113,6 +113,20 @@ def test_bodies_carry_marker_and_authority_note(tmp_path):
|
|
|
113
113
|
assert f"<!-- docassert-bridge: {s.id} -->" in story_body(s, None)
|
|
114
114
|
|
|
115
115
|
|
|
116
|
+
def test_doc_paths_relative_to_docs_repo_root(tmp_path):
|
|
117
|
+
"""CI checks the docs repo out into a subdirectory; Source links must not
|
|
118
|
+
carry that checkout prefix (they resolve against the docs repo root)."""
|
|
119
|
+
docs = _tree(tmp_path / "pmo")
|
|
120
|
+
plan = build_bridge_plan(docs)
|
|
121
|
+
f = plan.features[0]
|
|
122
|
+
assert f.doc_path == "documents/PRJ-001-TST/prd.md"
|
|
123
|
+
assert f.stories[0].doc_path == "documents/PRJ-001-TST/user-story.md"
|
|
124
|
+
body = feature_body(f, "https://github.com/o/r/blob/main")
|
|
125
|
+
assert ("**Source:** https://github.com/o/r/blob/main/"
|
|
126
|
+
"documents/PRJ-001-TST/prd.md") in body
|
|
127
|
+
assert "/pmo/" not in body
|
|
128
|
+
|
|
129
|
+
|
|
116
130
|
# ── ops against a fake runner ────────────────────────────────────────────────
|
|
117
131
|
class FakeGh:
|
|
118
132
|
"""Records mutations; serves canned issue lists."""
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{docassert-0.10.0 → docassert-0.10.1}/docassert/_data/criteria/benefits-realization.criteria.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{docassert-0.10.0 → docassert-0.10.1}/docassert/_data/criteria/data-migration-plan.criteria.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{docassert-0.10.0 → docassert-0.10.1}/docassert/_data/criteria/raci-stakeholder.criteria.yaml
RENAMED
|
File without changes
|
{docassert-0.10.0 → docassert-0.10.1}/docassert/_data/criteria/release-cutover-plan.criteria.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{docassert-0.10.0 → docassert-0.10.1}/docassert/_data/schema/benefits-realization.schema.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{docassert-0.10.0 → docassert-0.10.1}/docassert/_data/schema/data-migration-plan.schema.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{docassert-0.10.0 → docassert-0.10.1}/docassert/_data/schema/post-implementation-review.schema.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{docassert-0.10.0 → docassert-0.10.1}/docassert/_data/schema/release-cutover-plan.schema.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{docassert-0.10.0 → docassert-0.10.1}/docassert/_data/templates/benefits-realization.template.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{docassert-0.10.0 → docassert-0.10.1}/docassert/_data/templates/data-migration-plan.template.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{docassert-0.10.0 → docassert-0.10.1}/docassert/_data/templates/raci-stakeholder.template.md
RENAMED
|
File without changes
|
{docassert-0.10.0 → docassert-0.10.1}/docassert/_data/templates/release-cutover-plan.template.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|