diff --git a/.abcd/development/brief/04-surfaces/02-disembark.md b/.abcd/development/brief/04-surfaces/02-disembark.md index ebc48a2ad..77d337e50 100644 --- a/.abcd/development/brief/04-surfaces/02-disembark.md +++ b/.abcd/development/brief/04-surfaces/02-disembark.md @@ -137,7 +137,7 @@ a section of its own. ├── _provenance.json # the lifeboat marker and re-pack gate key, written last ├── coverage.json # per-section status (grounded|partial|blank), evidence, what was searched ├── coverage.md # rendered -├── brief/ # the brief, section by section, grounded from the source +├── brief/ # the brief, section by section, grounded from the source; a partial one says why │ ├── 01-product/ … 06-delivery/ │ └── glossary/ ├── graveyard/ # what the project tried and abandoned diff --git a/.abcd/work/issues/open/iss-2610072347247487-the-disembark-probe-s-invariants-naming.md b/.abcd/work/issues/open/iss-2610072347247487-the-disembark-probe-s-invariants-naming.md deleted file mode 100644 index c4a9127a3..000000000 --- a/.abcd/work/issues/open/iss-2610072347247487-the-disembark-probe-s-invariants-naming.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -schema_version: 1 -id: "iss-2610072347247487" -slug: "the-disembark-probe-s-invariants-naming" -severity: "minor" -category: "drift" -source: "agent-finding" -found_during: "the disembark probe lane (run-2610072231362768), 2026-10-07" -origin: researcher-authored -production_mode: hand-written -found_at: "internal/core/lifeboat" -remedy: "Have the invariants, naming and personas sources read their own brief file as the open-questions and tradeoffs sources now do (an authored file grounds the section, a stub makes it partial), and print each partial section's reason in the pack's per-section file as the coverage report does." ---- - -The disembark probe's invariants, naming and personas sources ignore their own brief files, unlike open-questions and tradeoffs since the probe lane, and the pack's per-section file does not print a partial section's reason, which coverage.json and the text render now carry. diff --git a/.abcd/work/issues/resolved/iss-2610072347247487-the-disembark-probe-s-invariants-naming.md b/.abcd/work/issues/resolved/iss-2610072347247487-the-disembark-probe-s-invariants-naming.md new file mode 100644 index 000000000..b3492ef97 --- /dev/null +++ b/.abcd/work/issues/resolved/iss-2610072347247487-the-disembark-probe-s-invariants-naming.md @@ -0,0 +1,23 @@ +--- +schema_version: 1 +id: "iss-2610072347247487" +slug: "the-disembark-probe-s-invariants-naming" +severity: "minor" +category: "drift" +source: "agent-finding" +found_during: "the disembark probe lane (run-2610072231362768), 2026-10-07" +origin: researcher-authored +production_mode: hand-written +found_at: "internal/core/lifeboat" +remedy: "Have the invariants, naming and personas sources read their own brief file as the open-questions and tradeoffs sources now do (an authored file grounds the section, a stub makes it partial), and print each partial section's reason in the pack's per-section file as the coverage report does." +resolution: "The invariants, naming and personas native adapters now read the section's own brief file through nativeWithBriefFile, as open-questions and tradeoffs do: an authored file grounds the section, a stub is cited and lifts a blank to partial with a reason. The pack's per-section brief file prints a partial section's reason as 'Why partial:', cleaned like every other untrusted field." +impact: fix +resolved_by: + commit: "aa51824ccdcbc36b188ae2e7f4dc27c5b8af7109" +--- + +The disembark probe's invariants, naming and personas sources ignore their own brief files, unlike open-questions and tradeoffs since the probe lane, and the pack's per-section file does not print a partial section's reason, which coverage.json and the text render now carry. + +## Grounds + +- pursued: a repository whose only signal for invariants, naming or personas is an authored brief file probes grounded for that section (a stub probes partial with a reason), and every partial section's packed brief file states its reason; TestNativeConstraintAndPersonaSectionsGroundFromTheirBriefFiles, TestPackSectionFileStatesWhyPartial and TestBriefSectionDocCleansItsPartialReason would fail if an adapter ignored its brief file or a packed partial omitted its reason diff --git a/internal/core/lifeboat/mdrender_test.go b/internal/core/lifeboat/mdrender_test.go index 2861f2b41..54a3c7b9e 100644 --- a/internal/core/lifeboat/mdrender_test.go +++ b/internal/core/lifeboat/mdrender_test.go @@ -195,3 +195,14 @@ func TestBlockValueKeepsATripleBacktickSpanAProseLine(t *testing.T) { } } } + +func TestBriefSectionDocCleansItsPartialReason(t *testing.T) { + md := string(briefSectionDoc(SectionCoverage{ + Name: "product/context", Status: StatusPartial, + Reason: "Found docs/