Azure DevOps as a documentation source: `living-doc-collector-ad`
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 12/100
Direzione di ricerca
This is an epic: start with the spike child, which needs an operator run against a real internal project and produces only a shape inventory. The collector skeleton is under work_items/ in living-doc-collector-ad (pinned to living-doc-utilities==0.8.0), and the HTML conversion lives in authoring.html_to_markdown. Done means the spike report confirms or removes each prepared contract field, and no newcomer-level task exists until that is finished.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Background
Azure DevOps is planned. In v0.1.0 it is not a documentation source. living-doc-collector-ad on master
(7a671f3) pins living-doc-utilities==0.8.0 and holds only the collector skeleton under work_items/. The contracts
already carry the Azure DevOps fields: source_ref.area_path, source_ref.iteration_path,
metadata.source.extraction_mode and AzureDevOps in systems, unfilled. utilities ships the pieces a work item
needs: authoring.html_to_markdown, normalize and the issue-body parser collector-gh will use.
docs/tutorials/ado-workitems-to-markdown.md and docs/guides/azure-devops-collection.md are marked planned.
The design to start from:
- Two body-extraction modes; the first real project decides which is built first.
markdown:
System.DescriptionHTML →html_to_markdown→normalize→ the same issue-body parsercollector-ghuses, so an
author writes the same## Description/## Status/## Business Value/## Acceptance Criteriasections as in
a GitHub issue. What the converter drops givesHTML_CONTENT_DROPPED. With no## Acceptance Criteriaheading,
a non-emptyMicrosoft.VSTS.Common.AcceptanceCriteriafield is used; with both, the description wins with
DUPLICATE_AC_SOURCE.field-map: a committed default map plus an operator override binds each canonical section
to a field. It changes only where the text comes from, never how it is read. System.Statefills onlysource_ref.tracker_state. User Story and Functionality status is authored, a Feature's
state is derived, and the mode is recorded inmetadata.source.extraction_mode.- Proof is golden entities, not a round trip. Each mode reproduces
utilities' golden entities from synthetic
fixtures. A round trip that drops content on both sides passes trivially. - Synthetic fixtures only.
collector-adowns their generator (tools/make_ado_fixtures.py) and a guard that
fails on an internal-looking URL, GUID or custom field reference.living-docregenerates
docs/examples/ado-work-items/from the pinned ref and fails CI on a byte difference. Nothing from an internal project
(organisation, project, credential, work-item content, custom field names) is ever committed.
Goals
collector-ad work-itemswrites a validdoc-entities.jsonthroughwrite_artifact. It takes a required
project-idand writes to<output-path>/work-items/. It follows the partial-collection rules, and a
--local-inputrun needs no credential and no network.- The mode the first real project needs reproduces
utilities' golden entities; each prepared contract field is
confirmed or removed. living-doc-toolkitreadsdoc-entities.jsoninnormalize-docsandcoverage-matrix; mixing or doubling
documentation sources still fails.living-docsnapshots the ADO chain over its synthetic corpus, and a milestone runs it on a real target with a
redacted report.- The action has the fleet shape and the repository's documentation follows the fleet's page rules; the ADO tutorial
carries a workflow; a release listscollector-ad.
Subtasks
In landing order. Each child is drafted when the previous one has merged.
-
living-doc(Spike form): measure one real internal project in an operator run. The report holds a shape
inventory only; no payload leaves the machine. It answers: hosting and auth, volume, the fields in use, the HTML
constructs, the type and status mapping, the entity-id rule, which extraction mode first, and whether the second
is needed. It confirms or removes each prepared contract field and names any missing one, which becomes a
utilitiescontract change. -
living-doc-collector-ad: the composite action in the fleet shape (copygenerator-markdown's venv step;
runtimerequirements.txt, dev tools inrequirements-dev.txt). -
living-doc-collector-ad: REST / WIQL client with 200-id batches and paging. It retries 429 and 5xx with
backoff andRetry-After; giving up names the id range and raisesSOURCE_UNAVAILABLE, never a partial result.
It covers the auth and hosting variants the spike found. -
living-doc-collector-ad: work-item mapping ontodoc-entities(types per the spike's table,native_type,
area_path,iteration_path, theentity_idrule withMISSING_ENTITY_ID;System.Stateonly in
tracker_state). -
living-doc-collector-ad: body extraction in the mode the spike selects, proven by golden entities, with every
HTML shape from the inventory tested and the fixture generator and guard committed. A converter gap is a
utilitiespatch. -
living-doc-collector-ad: relations → entity graph (UNRESOLVED_RELATION, counted inunresolved_refs). -
living-doc-collector-ad: wiring. Thework-itemsmode inaction.yml, with--local-input, the output
layout, a requiredproject-id, the partial-collection rules, the producer andextraction_mode, and a derived
Feature state. The component checks run inmake qa. -
living-doc-collector-ad(only if the spike recommends it): the second extraction mode. -
living-doc-collector-ad:local-integration.sh, whichliving-doc's runner reaches without a runner code
change. -
living-doc-toolkit:doc-entitiesinput fornormalize-docsandcoverage-matrix, behind an adapter
registry. An unknown producer is named;MIXED_DOCUMENTATION_SOURCESandMULTIPLE_DOCUMENTATION_SOURCESare
kept. Shared with the GitHub Issues epic: whichever epic gets there first builds it. -
living-doc: the ADO corpus regenerated from the pinnedcollector-ad, the snapshot chain, and both negative
runs. -
living-doc-collector-ad: documentation by the fleet's page rules, plus the manual link-check fix. -
living-doc: the ADO tutorial and guide lose "planned" and get a workflow, then a milestone run on a real
target with a redacted report, then the release.
Related / References
living-doc-utilitiesdocs/authoring/urls-and-html.md(HTML conversion),docs/contracts/pipeline-rules.md
(output layout, one documentation source, partial collection),docs/contracts/errors.md.living-docdocs/guides/azure-devops-collection.md,docs/tutorials/ado-workitems-to-markdown.md,
docs/projects/collector-ad.md,docs/_integration/README.md(internal targets, redacted reports).- Related issues: the contract should name a scenario's repository (a second
ui-testsproducer); the agentic layer
writes no issue body or work item. - Not in this epic: the
boards,pipelines,test_plansandrelease_notesmodes. They wait until a real
project needs one.
- Lingua principale
- Python
- Stelle
- 0
- Fork
- 0
- Merge medio
- 6h 14m
- PR unite (30g)
- 27
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di AbsaOSS/living-doc
-
type:tech-debt
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 78/100
AbsaOSS/living-doc#133 ·
I maintainer di solito rispondono entro 1 giorno
-
type:tech-debt
Difficoltà 1/5 1-3 ore Idoneità per principianti 85/100
AbsaOSS/living-doc#130 ·
I maintainer di solito rispondono entro 1 giorno
-
type:tech-debt
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
AbsaOSS/living-doc#129 ·
I maintainer di solito rispondono entro 1 giorno
-
type:tech-debt
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
AbsaOSS/living-doc#119 ·
I maintainer di solito rispondono entro 1 giorno
-
type:tech-debt
Difficoltà 5/5 Più di una settimana Idoneità per principianti 5/100
AbsaOSS/living-doc#136 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di AbsaOSS/living-doc
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
gorakhargosh/watchdog#1462 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
openwisp/openwisp-monitoring#889 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
OpenFreeEnergy/Lomap#180 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
roman-corgi/corgisim#327 ·
I maintainer di solito rispondono entro 2 giorni
-
agent:WSL bug code-review linux pri:medium sev:low tooling
Difficoltà 2/5 Mezza giornata Idoneità per principianti 62/100
I maintainer di solito rispondono entro 1 giorno